所以我有一个非常大的矩阵,其中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中初始化这样的矩阵?
答案 0 :(得分:1)
scipy的矩阵稀疏。您可以选择稀疏的行矩阵或列矩阵。 https://docs.scipy.org/doc/scipy/reference/sparse.html
答案 1 :(得分:1)
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()
用于其他转换。