有什么方法可以检查列表是否在np.array中?

时间:2019-10-01 17:53:20

标签: python numpy

我想找到一种方法来检查我的图像是否具有任何特定的RGB值。

我有一个列表

rgb = [128,134,45]

和图片

img = array([[[0,0,0],[128,134,45],[128,134,45],...,[0,0,0],[0,0,0],[0,0,0]]]) 形状=(64,64,3)

并想要获取rgb与img [j] [i]匹配的位置(i,j),例如pos = [(0,1),(0,2),...]

我尝试使用if rgb in img: brbr之类的“ in”,但没有用。

2 个答案:

答案 0 :(得分:3)

>>>np.where((img==rgb).all(axis=2))
(array([0, 0], dtype=int32), array([1, 2], dtype=int32))

这为您提供了rgb值的索引

img[0][1]img[0][2]

答案 1 :(得分:2)

类似于@Bendik的答案,但是此额外步骤为您提供了所有匹配的位置的数组:

np.rot90(np.array(np.where((img==rgb).all(axis=2))))

例如:

img = np.zeros((64,64,3))
rgb = [128,134,45]
img[1,2] = rgb
img[23,32] = rgb
# These are the values we want to find - (1,2) and (23,32)
result = np.rot90(np.array(np.where((img==rgb).all(axis=2))))
print(result)

#OUTPUT:
array([[23, 32],
       [ 1,  2]], dtype=int64)