Разреженные матрицы в SciPy, определенные функцией - PullRequest
3 голосов
/ 30 апреля 2011

Можно ли определить разреженную матрицу в scipy из функции, а не выкладывать все возможные значения? В документе я вижу, что разреженная матрица может быть создана с помощью

There are seven available sparse matrix types:
 csc_matrix: Compressed Sparse Column format
 csr_matrix: Compressed Sparse Row format
 bsr_matrix: Block Sparse Row format
 lil_matrix: List of Lists format
 dok_matrix: Dictionary of Keys format
 coo_matrix: COOrdinate format (aka IJV, triplet format)
 dia_matrix: DIAgonal format

Все это заставляет вас заранее указать матрицу, которая занимает память. Есть ли способ, которым я могу просто предоставить функцию для вычисления (i, j) при необходимости? Конечная цель состоит в том, чтобы вычислить несколько самых больших собственных векторов матрицы с помощью метода Ланцоша.

1 Ответ

2 голосов
/ 30 апреля 2011

Короткий ответ - «нет», но я думаю, что довольно просто свернуть свой собственный матричный объект. Если для получения ответа вы используете eigsh (что, по-видимому, является реализацией алгоритма Ланцоша), то для вашего матричного типа требуется метод matvec(x), что может или не может быть легко.

Я понимаю, что это не полный ответ, но я надеюсь, что это укажет вам путь.

...