1

我想在图片中搜索一个矩形。图片来自 PIL。这意味着我将得到一个二维数组,其中每个项目都是一个包含三个颜色条目的列表。

为了得到我正在使用的搜索颜色的矩形在哪里np.equal。这是一个缩小的例子:

>>> l = np.array([[1,1], [2,1], [2,2], [1,0]])
>>> np.equal(l, [2,1])  # where [2,1] is the searched color
array([[False,  True],
   [ True,  True],
   [ True, False],
   [False, False]], dtype=bool)

但我已经预料到:

array([False, True, False, False], dtype=bool)

或者

array([[False,  False],
   [ True,  True],
   [ False, False],
   [False, False]], dtype=bool)

如何实现嵌套列表比较numpy

注意:然后我想用np.where矩形的索引从np.equal.

4

1 回答 1

4

您可以all沿第二个轴使用该方法:

>>> result = numpy.array([[1, 1], [2, 1], [2, 2], [1, 0]]) == [2, 1]
>>> result.all(axis=1)
array([False,  True, False, False], dtype=bool)

并获得指数:

>>> result.all(axis=1).nonzero()
(array([1]),)

我更喜欢nonzero这样where做,因为根据传递给它的参数数量,where会做两件非常不同的事情。where当我需要它独特的功能时,我会使用它;当我需要 的行为时nonzero,我会nonzero明确使用。

于 2012-12-07T18:55:15.297 回答