>>> a = np.array([0, 0])
>>> a[[0, 0, 1, 1]] + [1, 2, 3, 4]
array([1, 2, 3, 4])
>>> a[[0, 0, 1, 1]] += [1, 2, 3, 4]
>>> a
array([2, 4])
据我了解a[[0, 0, 1, 1]]
返回 a
的 View ,其前两个元素指向 a[0]
最后两个元素指向 a[1]
。现在如果我想得到 a = [3, 7]
该怎么办? ?也就是说,完成以下任务的最简单方法是什么?
a = [0, 0]
indices = [0, 0, 1, 1]
values_to_add = [1, 2, 3, 4]
for i in indices:
a[i] += values_to_add[i]
最佳答案
您可能想查看np.add.at
>>> np.add.at(a, [0,0,1,1], [1,2,3,4])
>>> a
array([3, 7])
请注意,通常可以将 np.add.at
替换为 np.bincount
以获得相当大的加速。
最后,高级索引不返回 View ,而是返回副本。然而,分配仍然是另一回事。如果分配给副本,这不会很有用...
关于python - 添加到 numpy 数组的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49608041/