我有一个数组:
A = np.array([0, 0, 0])
和具有重复的索引列表:
idx = [0, 0, 1, 1, 2, 2]
我想使用上面的索引将另一个数组添加到 A 中:
B = np.array([1, 1, 1, 1, 1, 1])
操作:
A[idx] += B
给出结果:array([1, 1, 1])
,所以显然值来自B
没有总结出来。获得结果的最佳方式是什么array([2, 2, 2])
?我必须迭代索引吗?
对于这个 numpy 1.8 添加了at
减少:
at(a, 索引, b=无)
对元素的操作数“a”执行无缓冲就地操作
由“索引”指定。对于加法ufunc,这个方法是等价的
到a[indices] += b
,除了元素的结果是累积的
被多次索引的。例如,a[[0,0]] += 1
将要
由于缓冲,仅增加第一个元素一次,而add.at(a, [0,0], 1)
会将第一个元素增加两次。
..版本添加:: 1.8.0
In [1]: A = np.array([0, 0, 0])
In [2]: B = np.array([1, 1, 1, 1, 1, 1])
In [3]: idx = [0, 0, 1, 1, 2, 2]
In [4]: np.add.at(A, idx, B)
In [5]: A
Out[5]: array([2, 2, 2])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)