Python 对象数组到numpy数组

Python 对象数组到numpy数组,python,matlab,numpy,scipy,Python,Matlab,Numpy,Scipy,我有一个文件,它是一个包含多维数组的字典,文件的一部分如下所示 {'__globals__': [], 'ecgdata': array([[[ 0.64927447, -6.9518466 , -2.01598597, ..., 6.0144043 ,14.82659912, 9.60320473]], [[-10.91237354, -10.82145023, 5.33286715, ...,7.53680801,10.95550919, 7.916859

我有一个文件,它是一个包含多维数组的字典,文件的一部分如下所示

{'__globals__': [], 'ecgdata': array([[[  0.64927447,  -6.9518466 ,  -2.01598597, ...,   6.0144043 ,14.82659912,   9.60320473]],
       [[-10.91237354, -10.82145023,   5.33286715, ...,7.53680801,10.95550919,   7.91685963],[-15.30590725,   5.42344713, -13.84104443, ...,  10.68752861,7.95283413,   0.47035939]],[[-13.26809025, -11.63397312,  15.1417799 , ...,   4.38294888,9.83382416,   8.45503426],...,[-14.91312885,  11.75222111, -11.65044498, ...,   6.97022438,10.74245644,  -2.57275534]],..., [[-10.96194077,  -9.53885269,   5.87950087, ...,   5.83128738,5.32846308,  11.16324234],[-11.92566872,   8.81869507, -11.59397984, ...,   5.50253582,10.94230938,  -1.49227607]],[[ -5.74656582,   0.27805901,  -3.73075247, ...,   0.96725273,2.3064785 ,   4.91951847],[ -3.15279818,  -1.82596517,  -1.49705577, ...,   3.69363403,4.91635323,  -6.07875967]],[[ -9.50158024,   8.16193676,   4.33013773, ...,   6.0825882 ,-11.67652321,   1.97953737],[  5.58597708,   2.6614821 ,   2.63657999, ..., -19.56603241,-2.59806776,   0.98835891]]], dtype=float32)}
我想把这个对象数组转换成numpy数组,因此,我可以打印形状并知道每个维度的维度和大小。我尝试提取字典中的项目并转换为numpy数组,但在检查输出的数据类型时,我仍然有object。下面是我现在用来将数据转换为numpy数组的代码,但输出仍然是object

import numpy as np
import scipy.io
data=scipy.io.loadmat('filename.mat')
X= np.asarray(data)
print(X.dtype)`

我已经试过检查对象数组的形状,我得到()。我相信这应该是直接的,但我是一个新手,自学python…任何想法都会受到欢迎。

正如许多人指出的那样,
数据是一本字典。如果要提取“ecgdata”部分,只需执行以下操作:

ecg_data = data['ecgdata']

什么对象数组?这不是对象数组。这是一个dict。在dict上调用
asarray
后,只会得到一个对象数组,这是一个毫无意义的操作。如果你想从这个dict中得到数组,就给它编索引。我在用asarray转换成数组后得到了这个对象,但是原始文件是一个字典,正如我在我的question@user2357112Have您查看了
数据
loadmat
创建一个包含标题信息以及保存在MATLAB中的变量的字典。MATLAB矩阵加载为
np.array
(顺序为“F”),但单元格和结构将有一层或多层
对象
数据类型数组包装。演示一个loadmat