我有两个矩阵(行数和列数相同):一个包含浮点值,这些值按照另一个矩阵中的索引进行分组。因此,我想要一个字典或列表,其中包含每个索引的元素总和。
索引始终从0开始。
A = np.array([[0.52,0.25,-0.45,0.13],[-0.14,-0.41,0.31,-0.41]])
B = np.array([[1,3,1,2],[3,0,2,2]])
RESULT = {0: -0.41, 1: 0.07, 2: 0.03, 3: 0.11}
我找到了这个解决方案,但是我正在寻找一个更快的方法。我正在使用一个大小为784 x 300的矩阵,而这个算法需要大约28毫秒才能完成。
import numpy as np
def matrix_sum_by_indices(indices,matrix):
a = np.hstack(indices)
b = np.hstack(matrix)
sidx = a.argsort()
split_idx = np.flatnonzero(np.diff(a[sidx])>0)+1
out = np.split(b[sidx], split_idx)
return [sum(x) for x in out]
如果您可以帮我找到一个更好的、更简单的解决方案来解决这个问题,我将不胜感激! 编辑:我犯了一个错误,在300*10的矩阵中完成的时间是~8ms,但在784x300的矩阵中完成的时间是~28ms。 编辑2:我的"A"元素是float64类型,所以bincount会给我一个ValueError。
bincount
**。 - user3483203