У меня есть огромная разреженная матрица A
Линейные зависимые строки: Огромные разреженные матрицы
<5000x5000 sparse matrix of type '<type 'numpy.float64'>'
with 14979 stored elements in Compressed Sparse Column format>
, для которого нужен удалить линейно зависимые строки. У меня есть предшествующий, что строки j
будут зависеть. Мне нужно
- выяснить, какие наборы строк являются линейно зависимыми
- для каждого набора, держать одну произвольную строку и удалить другие
Я пытался следовать this question, но соответствующий метод для разреженных матриц, scipy.sparse.linalg.eigs говорит, что
к: количество собственных значений и собственных векторов желательно , k должно быть меньше N. Невозможно вычислить все собственные векторы матрицы .
Как продолжить?
Возможно, правильным инструментом является [QR-декомпозиция] (https://en.wikipedia.org/wiki/QR_decomposition). Scipy имеет только для плотных матриц. Однако ортонормализация [Gram-Schmid ортонормирования] (https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process#Algorithm) должна быть относительно простой для программирования для разреженных матриц, хотя ее быстрое выполнение, вероятно, потребует больших усилий , Линейно зависимые строки обозначаются строками, которые становятся нулевыми (или близкими к нулю) во время ортонормирования. Это вы можете обнаружить и записать индекс строки - это те, которые вы хотите удалить. –