当前位置:  开发笔记 > 编程语言 > 正文

使用数组作为索引增加numpy数组元素

如何解决《使用数组作为索引增加numpy数组元素》经验,为你挑选了1个好方法。

我试图有效地更新numpy数组A的一些元素,使用另一个数组b来指示要更新的A元素的索引.但是b可以包含被忽略的重复项,而我希望将其考虑在内.我想避免循环b.为了说明它:

>>> A = np.arange(10).reshape(2,5)
>>> A[0, np.array([1,1,1,2])] += 1
>>> A
array([[0, 2, 3, 3, 4],
       [5, 6, 7, 8, 9]])

而我希望输出为:

array([[0, 3, 3, 3, 4],
       [5, 6, 7, 8, 9]])

有任何想法吗?



1> Alex Riley..:

要正确处理重复索引,您需要使用np.add.at而不是+=.因此,要更新第一行A,最简单的方法可能是执行以下操作:

>>> np.add.at(A[0], [1,1,1,2], 1)
>>> A
array([[0, 4, 3, 3, 4],
       [5, 6, 7, 8, 9]])

ufunc.at方法的文件可以在这里找到.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有