Matlab到Python稀疏矩阵转换,解决零索引问题

3 投票
1 回答
1268 浏览
提问于 2025-04-16 22:05

我在Matlab中有一个N x N的稀疏矩阵,这个矩阵的单元格值是通过(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

谢谢大家给出的好建议。

我决定继续使用Python。目前我大部分的数据传输都是通过文本文件在Matlab和Python之间进行的。

撰写回答