我有一个数组:
A = np.array([0, 0, 0])
Run Code Online (Sandbox Code Playgroud)
和重复的索引列表:
idx = [0, 0, 1, 1, 2, 2]
Run Code Online (Sandbox Code Playgroud)
和另一个我希望使用上面的索引添加到A的数组:
B = np.array([1, 1, 1, 1, 1, 1])
Run Code Online (Sandbox Code Playgroud)
操作:
A[idx] += B
Run Code Online (Sandbox Code Playgroud)
给出结果:array([1, 1, 1])所以显然B没有总结出来的价值.获得结果的最佳方法是什么array([2, 2, 2])?我必须迭代索引吗?
jta*_*lor 18
对于这个numpy 1.8增加了at减少:
at(a,indices,b = None)
对'index'指定的元素在操作数'a'上执行无缓冲的就地操作.对于add ufunc,此方法等效于
a[indices] += b,除了为多次索引的元素累积结果.例如,a[[0,0]] += 1由于缓冲只会增加第一个元素,而add.at(a, [0,0], 1)第二个元素会增加两次... versionadded :: 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])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1184 次 |
| 最近记录: |