首页 > 解决方案 > 如何每行循环 Numpy Array

问题描述

我有两个 numpy 数组

X = np.array([[0,1,0,1,1],
         [0,1,1,1,0]])

X2 = np.array([[0.2,0.5,0.1,0.5,0.5],
          [0.3,0.6,0.6,0.6,0.4]])

我想要的是获得一个值为 X2 的新数组,其中 X 为 0,并对每行求和,所以我的输出应该是

[[0.3][0.7]]

我用了

X2[X==0]

这给了我整个数组中的所有 0,而不是每行,所以我得到了整个 0 数组的总和,而不是每行的总和。是否有切片功能或我可以用来获取行的总和的东西?

标签: pythonarraysnumpyloopsrows

解决方案


您可以将X其用作掩码,然后将该掩码与轴 1 相乘,X2并与sum轴 1相乘keepdims=True

>>> np.sum((X==0) * X2, axis=1, keepdims=True)

array([[0.3],
       [0.7]])

推荐阅读