稀疏矩阵减法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了稀疏矩阵减法相关的知识,希望对你有一定的参考价值。

我需要写一个函数,得到一个字典列表(每个字典代表一个稀疏矩阵),并返回一个减法矩阵的字典。

例如:对于列表 [{(1, 3): 2, (2, 7): 1}, {(1, 3): 6}] 要回 {(1, 3): -4, (2, 7): 1} .

矩阵的大小不必相同,列表可以有两个以上的矩阵,如果减法为0,那么它不应该出现在最终的字典中。

我成功地得到了 -4 但无论我在定义后写什么 x 我得到 x == -6 我也说不清为什么。我想插入 -4 作为该元素的新值。

lst = [{(1, 3): 2, (2, 7): 1}, {(1, 3): 6}]
def diff_sparse_matrices(lst):
    result = {}
    for dictionary in lst:
        for element in dictionary:
            if element not in result:
               result[element] = dictionary[element]
            if element in result:
               x = result[element] - dictionary[element]
答案
def diff_sparse_matrices(lst):
    result = lst[0].copy()
    for matrix in lst[1:]:
        for coordinates, value in matrix.items():
            result[coordinates] = result.get(coordinates, 0) - value
            if result[coordinates] == 0:
                del result[coordinates]
    return result
另一答案
    def diff_sparse_matrices(lst):
    result = lst[0].copy()
    for d in lst[1:]:
        for tup in d:
            if tup in result:
               result[tup] -= d[tup]
            else:
               result[tup] = -d[tup]
    return result  

以上是关于稀疏矩阵减法的主要内容,如果未能解决你的问题,请参考以下文章

关于稀疏矩阵三元组的转置

稀疏矩阵的运算

如何写成高性能的代码:巧用稀疏矩阵节省内存占用

如何写成高性能的代码:巧用稀疏矩阵节省内存占用

Python 稀疏矩阵访问元素

小代码 单链表之反转 然后交错重连+稀疏矩阵