首页 > 解决方案 > 计算一个numpy矩阵有多少列包含所有正值

问题描述

我想检查一个 numpy 数组/矩阵有多少列只有正值。

我拿了我的矩阵并打印A>0并得到了TrueFalse然后我尝试anyall函数但没有成功。

In [55]: a = np.array([[13, 21, 12],
                       [21, -1,  6],
                       [ 1, 10,  2],
                       [41,  1,  4]])

输出应该是2.

我保存了矩阵AB尝试编写:

B.all(axis=1).any()>0

标签: pythonnumpy

解决方案


此函数计算元素都大于 0 的列数:

def count(mat):
    counter = 0
    tmp = mat > 0
    for col in tmp.T:
        if all(col):
             counter += 1
    return counter

这个功能是如何工作的?

首先,它为 tmp 分配一个布尔值矩阵,指示原始矩阵的相应值是否大于 0,然后迭代该矩阵的转置并检查所有值是否为 True,这意味着它们都大于 0。

转置包含原始矩阵的列。乳清创建一个 numpy 数组,您将行传递给函数。通过转置,数组将包含列。


推荐阅读