【发布时间】:2017-06-27 09:44:06
【问题描述】:
我有一个空数组:
empty = np.array([0, 0, 0, 0, 0])
与我的空数组中的位置相对应的索引数组
ind = np.array([2, 3, 1, 2, 4, 2, 4, 2, 1, 1, 1, 2])
和一个值数组
val = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
我想根据'ind'给出的位置将'val'中的值添加到'empty'中。
非向量化解是:
for i, v in zip(ind, val): maps[i] += v
>>> maps
[ 0. 4. 5. 1. 2.]
我的实际数组是多维的并且很长,所以我有一个需要速度我真的想要一个矢量化解决方案,或者一个非常快的解决方案。
注意这不起作用:
maps[ind] += val
>>> maps
array([ 0., 1., 1., 1., 1.])
如果有一个可以在 python 2.7、3.5、3.6 中运行且没有问题的解决方案,我将不胜感激
【问题讨论】:
-
确实是重复的。但我的问题标题更清楚
标签: python performance python-2.7 numpy vectorization