我想要搜索图片中的矩形。图片来自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
提取矩形的索引。
答案 0 :(得分: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
执行two very different things取决于传递给它的参数数量。当我需要其独特的功能时,我会使用where
;当我需要nonzero
的行为时,我会明确使用nonzero
。