You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对列表中存储的csr_matrix稀疏矩阵进行高效求和

csr_matrix稀疏矩阵列表求和实现方案

报错原因

np.sum() 是numpy提供的求和接口,无法识别scipy稀疏矩阵的存储结构,会将列表中的每个稀疏矩阵作为独立对象处理,而非按矩阵元素逐位求和,因此会抛出异常。

正确实现方法

前提:所有参与求和的csr_matrix必须维度完全一致。

方法1:reduce累加(代码简洁,性能最优)

利用functools.reduce 结合加法算子完成批量累加,底层优化程度高,适合矩阵数量较多的场景:

from functools import reduce
import operator
from scipy.sparse import csr_matrix

# list_of_sparse 替换为你的csr_matrix格式稀疏矩阵列表
result = reduce(operator.add, list_of_sparse)

方法2:手动循环累加

适合需要在累加过程中插入额外处理逻辑的场景:

from scipy.sparse import csr_matrix

list_of_sparse = [] # 替换为你的稀疏矩阵列表
if not list_of_sparse:
    # 空列表自定义返回逻辑,示例为返回10行10列的全0稀疏矩阵,可按需修改维度
    result = csr_matrix((10, 10))
else:
    # 初始化和矩阵为对应维度的全0稀疏矩阵
    result = csr_matrix(list_of_sparse[0].shape, dtype=list_of_sparse[0].dtype)
    for mat in list_of_sparse:
        result += mat

注意事项

  • 求和前需校验所有矩阵的shape属性完全一致,否则会触发维度不匹配报错
  • 若矩阵中存在大量0元素,csr_matrix的累加会自动跳过0值计算,性能远高于转成稠密矩阵后求和

内容的提问来源于stack exchange,提问作者TinaTz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:36:01