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)object
dtype。 这个对象就是稀疏矩阵。 我从显示器、array
、object
和[...]中推断出这一点。`.
x[0,0].todense()
x[0,0].A # for array
应该工作。
我建议先显示
x[0,0]
我怀疑在 MATLAB 中这是一个大小为 (1,1) 的cell
。loadmat
自由地使用object
dtype数组来保存MATLABcell
和struct
。 只有纯矩阵才会变成数字数组。