我有一个像下面这样的稀疏数组:
import scipy
my_sparse_array = scipy.sparse.random(2000, 1000000, density=0.01, format='csr')
对于每一行,我都有一个组: 组= [“ A”,“ A”,“ B”,“ C”,“ D”] * 400
基于这些组,我想获取每列的总和,并输出一个数组,其中行现在是总组总和,而每列保持不变。
如何用稀疏矩阵有效地做到这一点?
谢谢, 杰克
编辑:
执行此操作的一种方法可能是执行以下操作:
import numpy as np
import pandas as pd
results = {}
group_set = set(groups)
for group in group_set:
indices = np.where(np.array(groups) == group)[0]
results[group] = my_sparse_array[indices, :].sum(axis=0).A1
final_result = pd.DataFrame(results)
但是,我想知道是否有比循环遍历组和子集更有效的方法。