Python 如何使用'np.where()`比较数组而不是单个值

Python 如何使用'np.where()`比较数组而不是单个值,python,python-3.x,numpy,numpy-ndarray,Python,Python 3.x,Numpy,Numpy Ndarray,我有一个图像(2D阵列),有3个颜色通道。大概是这样的: [[[128 197 254] [128 197 254] [128 197 254] ... [182 244 255] [182 244 255] [182 244 255]] [[128 197 254] [128 197 254] [128 197 254] ... [182 244 255] [182 244 255] [182 244 255]] [[128 197 25

我有一个图像(2D阵列),有3个颜色通道。大概是这样的:

[[[128 197 254]
  [128 197 254]
  [128 197 254]
  ...
  [182 244 255]
  [182 244 255]
  [182 244 255]]

 [[128 197 254]
  [128 197 254]
  [128 197 254]
  ...
  [182 244 255]
  [182 244 255]
  [182 244 255]]

 [[128 197 254]
  [128 197 254]
  [128 197 254]
  ...
  [182 244 255]
  [182 244 255]
  [182 244 255]]

 ...

 [[128 197 254]
  [128 197 254]
  [128 197 254]
  ...
  [182 244 255]
  [182 244 255]
  [182 244 255]]

 [[128 197 254]
  [128 197 254]
  [128 197 254]
  ...
  [182 244 255]
  [182 244 255]
  [182 244 255]]

 [[128 197 254]
  [128 197 254]
  [128 197 254]
  ...
  [182 244 255]
  [182 244 255]
  [182 244 255]]]
例如,我想获得[255,255,255]颜色的索引。我尝试使用
np.where()
np.argwhere()
,但它比较的是值而不是数组。最快、最有效的方法是什么

用np做这件事的一个简单方法是什么

这将为您提供一个二维数组,其中包含原始数组(图像)中白色像素[255、255、255]的坐标

注意:另一种方法是使用OpenCV


IIUC,您可以使用
np.nonzero

np.nonzero((arr==255).all(axis=2))
这将返回一个数组元组,表示索引。如果你这样做

arr[ind]

其中
ind
是第一个表达式的返回值,您可以访问/修改所有255行。

您是如何尝试使用
np的。where
where
只与您给出的布尔条件数组一样好。@RafaelC,感谢您的评论和平滑的回答(+1)。我的代码片段中的最后一个条目在坚持图像类比时引用了三个通道(r、g、b)。我想这取决于阵列的形状。这段代码适用于我,没有错误,并且按照要求执行。啊,好的,我看到你在那里做了什么;)
np.nonzero((arr==255).all(axis=2))
arr[ind]