【问题标题】:Numpy: Folding an array column-wiseNumpy:按列折叠数组
【发布时间】:2021-11-01 12:09:15
【问题描述】:

我有一个 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 来做到这一点?

【问题讨论】:

    标签: python numpy fold


    【解决方案1】:

    您可以使用.all(1) 检查每一行的and,然后使用 np.sum() 进行如下计数:

    >>> res = n.all(1)
    >>> res
    array([False, False,  True, False, False, False,  True])
    
    >>> res.sum()
    2
    

    【讨论】:

      【解决方案2】:

      单独使用 Numpy 的一种可能解决方案是:

      np.sum(np.equal(n, 1).all(axis=1))
      

      【讨论】:

        猜你喜欢
        • 2018-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-03
        • 2010-11-25
        • 2019-06-08
        • 2020-11-26
        • 1970-01-01
        相关资源
        最近更新 更多