如何在 Python 中将稀疏矩阵从 .mat 文件转换为密集矩阵?


import xlrd, xlwt
import scipy as sp
import scipy.io
import pandas as pd
import matplotlib.pyplot as plt
import pylab
from scipy.sparse import csc_matrix
%matplotlib inline
FileString = r'/content/drive/MyDrive/Thesis/EXIOBASE_3rx_aggLandUseExtensions_2015_pxp.mat'
MRIO = scipy.io.loadmat(FileString)
Regions = MRIO['IO']['A']
IN: Regions
OUT: array([[<42800x42800 sparse matrix of type '<class 'numpy.float64'>'
with 5986549 stored elements in Compressed Sparse Column format>]],
dtype=object)
IN: Regions.todense()
OUT: 
AttributeError                            Traceback (most recent call last)
<ipython-input-116-3ef413dd7ae9> in <module>()
----> 1 Regions.todense()
AttributeError: 'numpy.ndarray' object has no attribute 'todense'

我正在尝试将这个稀疏矩阵从 MATLAB 文件转换为密集矩阵,因此我应用了 todense() 函数,但我不知道为什么它不起作用。您的帮助将不胜感激 谢谢

您需要解压缩:

array([[<42800x42800 sparse matrix of type '<class 'numpy.float64'>'
with 5986549 stored elements in Compressed Sparse Column format>]],
dtype=object)

这是一个ndarray,如错误所示。 它的形状(1,1)objectdtype。 这个对象就是稀疏矩阵。 我从显示器、arrayobject和[...]中推断出这一点。`.

x[0,0].todense()
x[0,0].A        # for array

应该工作。

我建议先显示

x[0,0]

我怀疑在 MATLAB 中这是一个大小为 (1,1) 的cellloadmat自由地使用objectdtype数组来保存MATLABcellstruct。 只有纯矩阵才会变成数字数组。

相关内容

  • 没有找到相关文章

最新更新