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

不使用numpy的Python稀疏矩阵相减代码如何编写

稀疏矩阵减法实现优化方案

现有代码核心问题

  • 仅遍历了第一个矩阵的坐标键,后续矩阵存在但第一个矩阵不存在的坐标完全没有纳入计算,导致输出丢失对应键值
  • 三层嵌套循环完全冗余,无意义遍历会大幅降低运行效率,且实际计算逻辑和内层循环无关

优化实现思路

  • 先收集所有输入矩阵中出现过的全部坐标键,从根源上避免坐标遗漏
  • 以第一个矩阵的对应坐标值为初始值,依次减去后续所有矩阵同一坐标的取值(坐标不存在时默认取0)
  • 兼容任意数量的输入矩阵,不限制仅能处理3个矩阵的场景

优化后代码

def sparse_matrices(matrix_list):
    # 收集所有矩阵出现过的坐标键
    all_keys = set()
    for mat in matrix_list:
        all_keys.update(mat.keys())
    result = {}
    # 逐个坐标计算减法结果
    for key in all_keys:
        # 初始值取第一个矩阵的对应坐标值,不存在则为0
        val = matrix_list[0].get(key, 0)
        # 依次减去后续所有矩阵的对应坐标值
        for sub_mat in matrix_list[1:]:
            val -= sub_mat.get(key, 0)
        result[key] = val
    return result

# 测试示例
if __name__ == "__main__":
    test_input = [{(1, 3): 2, (2, 7): 1}, {(1, 3): 6, (9,10): 7}, {(2,7): 0.5, (4,2): 10}]
    print(sparse_matrices(test_input))
    # 输出:{(1, 3): -4, (2, 7): 0.5, (9, 10): -7, (4, 2): -10}

代码优势

  • 完全不依赖numpy等第三方库,符合需求
  • 输出结果和题目预期完全一致,不会遗漏仅在后续矩阵中出现的坐标
  • 时间复杂度为O(n),n为所有矩阵的总键数,运行效率远高于原有实现
  • 支持任意数量的输入矩阵,适配性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:24:03