鼠尾草中的稀疏矩阵

时间:2019-04-21 09:23:15

标签: python matrix sparse-matrix sage

所以我有一个非常大的矩阵,其中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中初始化这样的矩阵?

2 个答案:

答案 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()用于其他转换。