numpy,其中RGB通道大于[0,0,0]



试图找到不等于黑色的颜色,我需要最快的方法来做到这一点。Strangle,下面的代码适用于条件!=。它不适用于>或=。此外,我不想求和通道和搜索值大于0(太慢(

import numpy as np
x = np.zeros(shape=[2,10,3])
x[0,0]=np.array([0,0,255])
x[0,5]=np.array([255,0,0])
x[0,8]=np.array([255,0,0])
x[0,9]=np.array([255,0,0])
x[1,2]=np.array([0,0,255])
x[1,1]=np.array([255,0,0])
x[1,9]=np.array([255,0,0])
x[1,6]=np.array([255,0,0])
indices=(np.where(np.all(x[0,:]!=[0,0,0],axis=-1),))
print('values',x[i])
>> []

感谢提前提供建议

IIUC,您可以这样做来查找数组中至少有一个非零值的位置:

x[np.any(x != 0, axis = 2)]
# Or, using np.where as you were:
# np.where(np.any(x!=0, axis=2))
# (array([0, 0, 0, 0, 1, 1, 1, 1]), array([0, 5, 8, 9, 1, 2, 6, 9]))

示例:

>>> x
array([[[  0.,   0., 255.],
[  0.,   0.,   0.],
[  0.,   0.,   0.],
[  0.,   0.,   0.],
[  0.,   0.,   0.],
[255.,   0.,   0.],
[  0.,   0.,   0.],
[  0.,   0.,   0.],
[255.,   0.,   0.],
[255.,   0.,   0.]],
[[  0.,   0.,   0.],
[255.,   0.,   0.],
[  0.,   0., 255.],
[  0.,   0.,   0.],
[  0.,   0.,   0.],
[  0.,   0.,   0.],
[255.,   0.,   0.],
[  0.,   0.,   0.],
[  0.,   0.,   0.],
[255.,   0.,   0.]]])
>>> x[np.any(x != 0, axis = 2)]
array([[  0.,   0., 255.],
[255.,   0.,   0.],
[255.,   0.,   0.],
[255.,   0.,   0.],
[255.,   0.,   0.],
[  0.,   0., 255.],
[255.,   0.,   0.],
[255.,   0.,   0.]])

最新更新