创建一个已知索引和值的稀疏矩阵

时间:2014-03-31 03:59:55

标签: python numpy matrix

我想在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的值,其余为零。

谢谢, 阿米尔

2 个答案:

答案 0 :(得分:1)

many ways来表示稀疏矩阵。其中很多都是在scipy.sparse中实现的。

定义稀疏矩阵的方式称为密钥字典(DOK)格式,但效率不高。根据您的使用情况,您应该将其转换为不同的格式,例如用于列式操作的CSC格式,用于行式操作的CSR格式。

答案 1 :(得分:0)

您现在使用的方法在时间和空间复杂度(O(1),O(n))方面效率很高。另一个同样有效的替代方案是字典词典。这里第一个键是x-coord,第二个键是y-coord(反之亦然)。我喜欢这个,因为语法非常直观。

即。访问第3列和第5行交叉处的值:matrix [3] [5]