在稀疏数组上按组计算总和

时间:2018-12-26 22:24:28

标签: python numpy scipy sparse-matrix

我有一个像下面这样的稀疏数组:

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)

但是,我想知道是否有比循环遍历组和子集更有效的方法。

0 个答案:

没有答案