我想在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
的值,其余为零。
谢谢, 阿米尔
答案 0 :(得分:1)
有many ways来表示稀疏矩阵。其中很多都是在scipy.sparse中实现的。
定义稀疏矩阵的方式称为密钥字典(DOK)格式,但效率不高。根据您的使用情况,您应该将其转换为不同的格式,例如用于列式操作的CSC格式,用于行式操作的CSR格式。
答案 1 :(得分:0)
您现在使用的方法在时间和空间复杂度(O(1),O(n))方面效率很高。另一个同样有效的替代方案是字典词典。这里第一个键是x-coord,第二个键是y-coord(反之亦然)。我喜欢这个,因为语法非常直观。
即。访问第3列和第5行交叉处的值:matrix [3] [5]