在Python中表示稀疏矩阵而不使用库

在Python中表示稀疏矩阵而不使用库,python,data-structures,Python,Data Structures,我想在Python中用一种不浪费空间但同时保持恒定访问时间的数据结构来表示稀疏矩阵。有什么简单/琐碎的方法吗?我知道像scipy这样的库都有它。有很多方法可以做到这一点。例如,您可以保留一个列表,其中每个列表元素要么是一个数据对象,要么是一个表示N个空白项的整数。使用元组作为键进行Dict可能会起作用。根据用途,scipy.sparse库使用不同的格式。它们都实现了一个二维矩阵 键字典-数据结构是一个字典,以坐标元组作为键。这是最容易设置和使用的 列表列表-有2个列表列表。一个列表包含列坐标,

我想在Python中用一种不浪费空间但同时保持恒定访问时间的数据结构来表示稀疏矩阵。有什么简单/琐碎的方法吗?我知道像scipy这样的库都有它。

有很多方法可以做到这一点。例如,您可以保留一个列表,其中每个列表元素要么是一个数据对象,要么是一个表示N个空白项的整数。

使用元组作为键进行Dict可能会起作用。

根据用途,
scipy.sparse
库使用不同的格式。它们都实现了一个二维矩阵

  • 键字典-数据结构是一个字典,以坐标元组作为键。这是最容易设置和使用的

  • 列表列表-有2个列表列表。一个列表包含列坐标,另一个列表包含列数据。每行矩阵一个子列表

  • coo-经典设计。3数组、行坐标、列坐标和数据值

  • 压缩行(或列)-更复杂版本的
    coo
    ,针对数学运算进行优化;基于线性代数的数学已有几十年的历史

  • 对角线-适用于矩阵,大多数值位于几条对角线上