Python numpy数组在某些索引上的总和

Mar*_*_Ma 4 python numpy sum indices

如何只为numpy数组的索引列表执行求和,例如,如果我有一个数组a = [1,2,3,4]和一个要求和的索引列表,indices = [0, 2]我想要一个快速操作给我答案,4因为索引0处的求和值的值和索引2 a4

and*_*ece 9

您可以sum在索引后直接使用indices:

a = np.array([1,2,3,4])
indices = [0, 2] 
a[indices].sum()
Run Code Online (Sandbox Code Playgroud)


Ton*_*hou 7

接受的a[indices].sum()方法复制数据并创建一个新数组,如果数组很大,这可能会导致问题。np.sum实际上有一个参数来掩盖列,你可以这样做

np.sum(a, where=[True, False, True, False])
Run Code Online (Sandbox Code Playgroud)

它不复制任何数据。

掩码数组可以通过以下方式获得:

mask = np.full(4, False)
mask[np.array([0,2])] = True
Run Code Online (Sandbox Code Playgroud)