所以,我必须加载许多带有一些功能的.mat文件来绘制它。
要绘制的每个数组都加载到字典中:
import numpy as np
import scipy.io as io
dict1 = io.loadmat('file1.MAT')
dict2 = io.loadmat('file2.MAT') # type = dict
dict3 = io.loadmat('file3.MAT')
...
因此我必须采用我需要的词典元素,以便在之后进行策划:
array1 = dict1['data']
array2 = dict2['data']
array3 = dict3['data']
...
在此之后,我可以绘制数据。它有效,但看起来很愚蠢(如果我有100个向量,它将需要一些时间......)。有没有更好的方法来完成这项任务?
答案 0 :(得分:4)
鉴于您正在讨论处理许多矩阵,您应该将它们作为集合进行管理。首先,让我们定义您的文件集。它可以是一个元组,也可以是一个列表:
Matrix_files = [ 'fileA.MAT', 'file1.MAT', 'no pattern to these names.MAT' ]
如果碰巧有模式,您可以尝试生成名称:
Matrix_files = [ 'file{}.MAT'.format(num) for num in range(1,4) ]
如果他们共享一个公共位置,您可以考虑使用各种目录扫描方法之一(opendir
或glob
来命名两个)。
获得文件名列表后,您可以阅读以下词典:
def read_matrix(filespec):
from scipy.io import loadmat
md = loadmat(filespec)
# process md
return md
有了这个,你可以获得所有数据,或获得一些数据:
All_data = [read_matrix(f) for f in Matrix_files]
Some_data = [read_matrix(f)['data'] for f in Matrix_files]
如果您只关心数据,可以跳过函数定义:
from scipy.io import loadmat
Just_data = [loadmat(f)['data'] for f in Matrix_files]