图像数组处理中np.unique返回的indices参数含义咨询
理解numpy.unique的return_index参数
我来帮你搞清楚return_index=True在这里的作用哈!你得到的indices数组里的数值,对应着原图像数组中每个唯一值第一次出现的位置索引——注意这里的索引是把多维数组展平成一维后的位置哦。
核心逻辑拆解
当你调用np.unique(img, return_index=True)时,numpy会返回两个结果:
a:原数组中所有不重复的数值,默认按升序排列(也就是你得到的[0,1])indices:数组里每个唯一值,在被展平为一维的原数组中第一次出现的索引位置。
结合你的例子分析
从你显示的黑白图像来看,这是一张单通道的二值图(只有0和1两种像素值),假设图像数组的形状是(height, width),那么展平后的一维数组长度就是height * width:
indices[0] = 0:说明像素值0是展平数组的第一个元素,对应图像左上角的像素就是0indices[1] = 879385:说明像素值1第一次出现在展平后的第879386个位置(因为索引从0开始计数)。如果想知道这个位置在图像里的二维坐标,可以用np.unravel_index(879385, img.shape)来转换,得到对应的(row, col)位置。
验证小技巧
你可以用下面的代码验证这个逻辑:
# 验证展平数组中对应索引的数值 print(img.flatten()[indices[0]]) # 输出:0 print(img.flatten()[indices[1]]) # 输出:1 # 转换为二维坐标并验证 row, col = np.unravel_index(indices[1], img.shape) print(img[row, col]) # 输出:1
内容的提问来源于stack exchange,提问作者user297850
相关产品推荐
相关产品推荐

