Matlab到Python稀疏矩阵转换,解决零索引问题
我在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之间进行的。