Преобразование разреженных матриц в Matlab в Python, преодоление проблемы нулевого индекса - PullRequest
3 голосов
/ 22 июля 2011

У меня есть N x N разреженная матрица в Matlab, в которой значения ячеек индексируются парами (r, c), так что r и c являются уникальными идентификаторами.

Проблема в том, что после преобразования этой матрицы в Python все значения индексов уменьшаются на 1.

Например:

Before                     After
(210058,10326) = 1         (210057,10325) = 1

В настоящее время яЧтобы противодействовать этому, выполните следующие действия:

mat_contents = sparse.loadmat(filename)
G = mat_contents['G']
I,J = G.nonzero()
I += 1
J += 1
V = G.data
G = sparse.csr_matrix((V,(I,J)))

Я также пытался использовать другие параметры в scipy.sparse.io.loadmat {matlab_compatible, mat_dtype}, но ни один из них не работал.

Я ищу решение, котороедаст мне те же индексы, что и матрица Matlab.Решения, которые не требуют реконструкции матрицы, были бы идеальными, но мне также любопытно, как другие обошли эту проблему.

1 Ответ

2 голосов
/ 28 июля 2011

Спасибо всем за добрый совет.

Я решил придерживаться Python.Сейчас я делаю большую часть своих передач данных между Matlab и Python, используя текстовые файлы.

...