【发布时间】:2016-09-16 17:50:42
【问题描述】:
我从两个相同大小的图像开始。我将它们转换为二进制黑色/白色 numpy 数组(0 = 黑色 1 = 白色)。我想知道有多少黑色像素重叠(两个数组中相同位置的 0 值)。
我知道如何使用 for 循环执行此操作,但我正在尝试学习如何正确使用 numpy,并且我想有更好的方法来执行此操作。
一个最小的例子如下:
数组A:
[ 1 1 0 ]
[ 1 0 0 ]
[ 0 1 1 ]
数组B:
[ 1 0 0 ]
[ 1 1 0 ]
[ 0 1 1 ]
我想知道两个数组在同一位置有多少次“0”值。
在这种情况下,第 1 行第 3 列一次,第 2 行第 3 列一次,第 3 行第 1 列一次。 “0”值的总重叠:3。
我在想一些类似的东西
np.where(arrayA == 0 and arrayB == 0)
但这不起作用。
【问题讨论】:
-
您能否在您的问题中添加一个最小且可验证的示例?
-
你尝试了什么?你检查过 numpy 文档吗?我想它可以是一些像这样的布尔运算:docs.scipy.org/doc/numpy/reference/…。类似
invert(bitwise_and(x1, x2)) -
@Kasramvd 当然。将其添加到原始问题中。
-
如果您正在计数,您可以使用
np.count_nonzero有效地计算在接受的解决方案中创建的掩码。这将比使用.sum()快得多。这是我最近对其进行的运行时测试 - stackoverflow.com/a/38687313/3293881 -
@Divakar 感谢您提供的额外信息!
标签: python arrays numpy multidimensional-array