Python numpy 数组对某些索引求和

新手上路,请多包涵

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

原文由 Marcus_Ma 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 631
2 个回答

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

 a = np.array([1,2,3,4])
indices = [0, 2]
a[indices].sum()

原文由 andrew_reece 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

np.sum(a, where=[True, False, True, False])

这不会复制任何数据。

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

 mask = np.full(4, False)
mask[np.array([0,2])] = True

原文由 Tong Zhou 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题