稀疏阵列上分组求和

2024-04-20 15:20:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个稀疏数组,如下所示:

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)

然而,我想知道是否有一个更有效的方法,而不是循环通过组和子集。你知道吗


Tags: 方法importmyasnpgroupscipy数组