Numpy:按列折叠数组
Numpy: Folding an array column-wise
我有一个 n 维布尔 numpy 数组。如何在每列之间应用逻辑 AND 运算。我想获取仅包含行的行数。
示例:
n = np.array([[0, 0],
[1, 0],
[1, 1],
[0, 1],
[1, 0],
[0, 0],
[1, 1]]
)
这里,结果应该是2,因为只有第三行和最后一行只包含1。
这可以通过 functools
模块完成:
from functools import reduce
np.sum(reduce(np.logical_and, n.T))
但是有没有办法只用 numpy 来做到这一点?
您可以使用 .all(1)
检查每一行的 and
然后使用 np.sum() 进行计数,如下所示:
>>> res = n.all(1)
>>> res
array([False, False, True, False, False, False, True])
>>> res.sum()
2
一种可能的解决方案,仅使用 Numpy 是:
np.sum(np.equal(n, 1).all(axis=1))
我有一个 n 维布尔 numpy 数组。如何在每列之间应用逻辑 AND 运算。我想获取仅包含行的行数。
示例:
n = np.array([[0, 0],
[1, 0],
[1, 1],
[0, 1],
[1, 0],
[0, 0],
[1, 1]]
)
这里,结果应该是2,因为只有第三行和最后一行只包含1。
这可以通过 functools
模块完成:
from functools import reduce
np.sum(reduce(np.logical_and, n.T))
但是有没有办法只用 numpy 来做到这一点?
您可以使用 .all(1)
检查每一行的 and
然后使用 np.sum() 进行计数,如下所示:
>>> res = n.all(1)
>>> res
array([False, False, True, False, False, False, True])
>>> res.sum()
2
一种可能的解决方案,仅使用 Numpy 是:
np.sum(np.equal(n, 1).all(axis=1))