我将此数组作为在将RGB整数值作为数组
后减去两个图像的结果arr = img1 - img2
[[[0 0 0]
[0 0 0]
[0 0 0]
...,
[0 0 0]
[0 0 0]
[0 0 0]]
...,
[[0 0 0]
[0 0 0]
[0 0 0]
...,
[0 0 0]
[0 0 0]
[0 0 0]]]
我使用这些代码行来改变数组的形状以添加每个像素减法的索引
x, y, z = arr.shape
indices = np.vstack(np.unravel_index(np.arange(x*y), (y, x))).T
result = np.hstack((arr.reshape(x*y, z), indices))
以及结果如下:
[[ 0 0 0 0 0]
[ 0 0 0 0 1]
[ 0 0 0 0 2]
...,
[ 0 0 0 511 509]
[ 0 0 0 511 510]
[ 0 0 0 511 511]]
每行中的前三个值是RGB差异,后两个值是X和Y索引 我的问题是,有没有一种有效的方法来找到非零值的指数?
答案 0 :(得分:0)
如果我理解你的说法是正确的,那么你需要列表中的每个列表......
说这是你的清单:
l=[[0,0,0,0,0],[0,0,0,0,1],[0,0,0,0,2],[0,0,0,511,509],[0,0,0,511,510],[0,0,0,511,511]]
尝试跑步:
import numpy as np
ans=[np.nonzero(l[i])[0] for i in range(1,len(l))]
print ans
返回:
[array([4]), array([4]), array([3, 4]), array([3, 4]), array([3, 4])]
所以它是一个包含数组的数组,每个列表中的每个非零元素都有索引。由于它使用列表理解,它运行得非常快,并且加入就像使用索引一样简单。它只是ans [列表中的列表] [非零指数的数量]如下:
ans[2][1]
4