0
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() 函数,但我不知道为什么它不起作用。您的帮助将不胜感激谢谢

4

1 回答 1

0

你需要解压:

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

这是ndarray错误所示。它具有形状(1,1),objectdtype。那一个对象是稀疏矩阵。我从显示中推断出array,object和 [[...]]`。

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

应该管用。

我建议先显示

 x[0,0]

我怀疑在 MATLAB 中这是一个cell,大小为 (1,1)。 loadmat自由使用objectdtype 数组来保存 MATLABcellstruct. 只有纯矩阵才能成为数值数组。

于 2021-04-22T19:48:16.240 回答