我有一个大数组(~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)])
我只是想知道有更好的方法吗?