У меня есть разреженный массив, подобный следующему:
import scipy
my_sparse_array = scipy.sparse.random(2000, 1000000, density=0.01, format='csr')
И для каждой строки у меня есть группа: groups = ["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)
Однако мне было интересно, существует ли более эффективный способ, кроме циклического прохождения групп и подмножеств.