Numpy:使用掩码数组对行进行条件求和

3
假设我有数组a和数组mask,
Array a:
[[1,1,2]
 [2,2,3]
 [3,5,2]
 [2,3,4]]

Array mask:
[[0,1]
 [1,1]
 [1,0]
 [0,0]]

我该如何使用numpy以类似下面的方式生成一个形状为(2,3)的数组c:
Array c:
[[5, 3],
 [7, 3],
 [5, 5]])

第一列是由mask[:,0]指示的数组a的行之和,第二列是由mask[:,1]指示的行之和,如下所示:

c[:0] = a[1]+a[2]

c[:1] = a[0]+a[1]
1个回答

5
您可以使用 numpy 的点积运算,它本质上是一个矩阵乘积,具体文档请参见这里:

对于二维数组,它是矩阵乘积

import numpy as np
np.dot(a.transpose(), mask)

# array([[5, 3],
#        [7, 3],
#        [5, 5]])

没想到要做点积。谢谢! - Allen Qin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接