将多个值添加到单个数组元素

时间:2017-04-29 17:03:18

标签: python arrays numpy

我有一个大数组(~10 ^ 7个元素),我想要映射到另一个数组,元素更少。

例如,

data = np.array([53.6, 47.9, 12.3, 2.45, ... , 8.35, 9.40]) # 10^7 elements
output_array = np.array([0.0, 0.0, ..., 0.0, 0.0)] # Say 10^5 elements, initialized to zero

我有一个与'data'长度相同的索引数组,它将每个值映射到'output_array'中的新索引。有许多重复项,output_array中可能有索引没有映射到它们的值。

例如,

inds = np.array([1260, 1260, 1260, 1238, 1238, 2359, 234, ..., 2509, 120])

我希望能够将'data'中的所有值添加到'output_array'中的相应索引。

output_array[inds] += data

不起作用,因为它只保留映射到每个索引的最后一个值。

目前,我最好的解决方案如下:

inds_uniq = set(inds)
for ind in inds_uniq:
    output_map[ind] += np.sum(data[np.where(inds == ind)])

我只是想知道有更好的方法吗?

0 个答案:

没有答案