所以我有一个非常大的矩阵,n = 70.000充满了RDF。对于普通矩阵,这当然是不可能的。所以我想使用某种形式的稀疏矩阵,矩阵列中的元素在很多情况下都是0或者所有相同的低RDF。
例如:
0 | 0.1 | 0.2 | 0
0 | 0.1 | 0.2 | 0.1
0.1 | 0 | 0 | 0.1
0 | 0.1 | 0.2 | 0
在这个例子中,第一列有3次0,第二列有3次0.1,......
如何在Sage / Python中初始化这样的矩阵?
scipy有稀疏的矩阵。您可以选择稀疏行或列矩阵。 https://docs.scipy.org/doc/scipy/reference/sparse.html
Sage的稀疏矩阵不会利用非零条目重复的事实,但它们将利用非零条目不多的事实。要定义一个,使用一个字典,其中键是整数对(row, column)
:
sage: m = matrix(4, 4, {(1, 1): 2.1, (2,3): -0.5})
sage: m
[ 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000]
[ 0.000000000000000 2.10000000000000 0.000000000000000 0.000000000000000]
[ 0.000000000000000 0.000000000000000 0.000000000000000 -0.500000000000000]
[ 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000]
sage: type(m)
<type 'sage.matrix.matrix_generic_sparse.Matrix_generic_sparse'>
sage: m.is_sparse()
True
您还可以使用mat.sparse_matrix()
将任何矩阵从密集转换为稀疏,并且对于其他转换有相应的方法mat.dense_matrix()
。