我想用python做一个稀疏矩阵。我将非零元素的索引和值作为字典,即:
{((1,3),0.0001),(10,4),0.0212)...}这意味着元素(1,3)的值是0.0001, (10,4),是0.0212,等等,其余的都是零。
我想知道是否有任何有效的方法来形成这样一个稀疏矩阵,因为数据量是巨大的。矩阵的总维数是2,000 X 2,000,000,只有矩阵的8,000,000有值,其余的都是零。
谢谢,阿米尔
发布于 2014-03-31 12:18:11
有many ways来表示稀疏矩阵。其中很多都是用scipy.sparse实现的。
定义稀疏矩阵的方式称为键字典(DOK)格式,但效率不是很高。根据您的用途,您应该将其转换为不同的格式,例如用于按列操作的CSC格式,用于按行操作的CSR格式。
发布于 2014-03-31 12:29:12
您现在使用的方法将在时间和空间复杂度(O(1),O(n))方面是有效的。另一种同样有效的选择是字典字典。这里的第一个键是x-coord,第二个键是y-coord (反之亦然)。我喜欢它,因为它的语法非常直观。
即。要访问第三列和第五行的交叉点处的值: matrix3
https://stackoverflow.com/questions/22753398
复制相似问题