在 python 中访问 .mat 文件中的数组内容
Accessing array contents inside .mat file in python
我想阅读 http://www.eigenvector.com/data/tablets/index.html 上提供的 .mat 文件。要访问此文件中的数据,我正在尝试以下操作:
import scipy.io as spio
import numpy as np
import matplotlib.pyplot as plt
mat = spio.loadmat('nir_shootout_2002.mat')
# http://pyhogs.github.io/reading-mat-files.html
def print_mat_nested(d, indent=0, nkeys=0):
if nkeys>0:
d = {k: d[k] for k in d.keys()[:nkeys]}
if isinstance(d, dict):
for key, value in d.iteritems():
print '\t' * indent + 'Key: ' + str(key)
print_mat_nested(value, indent+1)
if isinstance(d,np.ndarray) and d.dtype.names is not None:
for n in d.dtype.names:
print '\t' * indent + 'Field: ' + str(n)
print_mat_nested(d[n], indent+1)
print_mat_nested(mat, nkeys=1)
以上命令显示字典中的第一个键是"validate_1",它有一个字段"data"。要访问此字段,我尝试:
t = mat['validate_1']
print(t['data'])
它打印一个数组,但是当我使用 np.shape(t['data'])
时,它只是 returns (1,1) 而数据似乎更大。我不确定如何访问 t['data'].
中的数组
感谢您的帮助。
我发现以下作品:
t = mat['validate_1']['data'][0,0]
print(np.shape(t))
returns t 是一个形状为 (40,650)
.
的数组
我想阅读 http://www.eigenvector.com/data/tablets/index.html 上提供的 .mat 文件。要访问此文件中的数据,我正在尝试以下操作:
import scipy.io as spio
import numpy as np
import matplotlib.pyplot as plt
mat = spio.loadmat('nir_shootout_2002.mat')
# http://pyhogs.github.io/reading-mat-files.html
def print_mat_nested(d, indent=0, nkeys=0):
if nkeys>0:
d = {k: d[k] for k in d.keys()[:nkeys]}
if isinstance(d, dict):
for key, value in d.iteritems():
print '\t' * indent + 'Key: ' + str(key)
print_mat_nested(value, indent+1)
if isinstance(d,np.ndarray) and d.dtype.names is not None:
for n in d.dtype.names:
print '\t' * indent + 'Field: ' + str(n)
print_mat_nested(d[n], indent+1)
print_mat_nested(mat, nkeys=1)
以上命令显示字典中的第一个键是"validate_1",它有一个字段"data"。要访问此字段,我尝试:
t = mat['validate_1']
print(t['data'])
它打印一个数组,但是当我使用 np.shape(t['data'])
时,它只是 returns (1,1) 而数据似乎更大。我不确定如何访问 t['data'].
感谢您的帮助。
我发现以下作品:
t = mat['validate_1']['data'][0,0]
print(np.shape(t))
returns t 是一个形状为 (40,650)
.