Разреженная матрица в Sage - PullRequest
0 голосов
/ 21 апреля 2019

Итак, у меня действительно большая матрица с 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 ]

1 голос
/ 22 апреля 2019

Разреженные матрицы 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()для другого преобразования.

1 голос
/ 21 апреля 2019

Сципи имеет разреженные матрицы.Вы можете выбрать разреженную строку или матрицу столбца.https://docs.scipy.org/doc/scipy/reference/sparse.html

...