Я сталкиваюсь с узким местом при суммировании фрагментов очень большой разреженной матрицы CSR в Python. Я хотел бы добавить столбцы матрицы CSR X по модулю некоторого n (мы можем предположить, что n | n_columns).
ex. если матрица X = 20x9 и n = 3 матрица F (X) = 20x3, где F (X) j, i = x {j, i} + x_ {j, i + 3} + x_ {j , i + 6}
мой текущий код:
n_rows, n_cols = X.shape
new_n_cols = n_cols // n
FX = np.sum (X [:, i * new_n_cols: (i + 1) * new_n_cols] для i в диапазоне (n))
Есть ли более быстрый способ сделать это для матриц CSR что не предполагает нарезки? что, возможно, просто использует операции с пространством indptr?