Sage中的稀疏矩阵

问题描述 投票:0回答:2

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

python matrix sparse-matrix sage
2个回答
1
投票

scipy有稀疏的矩阵。您可以选择稀疏行或列矩阵。 https://docs.scipy.org/doc/scipy/reference/sparse.html


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()

© www.soinside.com 2019 - 2024. All rights reserved.