Jay*_*Jay 7 python matlab numpy scipy
我已经读了一个包含大量数组作为数据集的Matlab文件到Python中,mat使用以下命令在变量名下存储Matlab Dictionary :
mat = loadmat('Sample Matlab Extract.mat')
有没有办法我可以使用Python写入csv功能来保存这个我在Python中作为逗号分隔文件读取的Matlab字典变量?
with open('mycsvfile.csv','wb') as f:
w = csv.writer(f)
w.writerows(mat.items())
f.close()
Run Code Online (Sandbox Code Playgroud)
创建一个CSV文件,其中一列包含字典中的数组名称,然后另一列包含每个相应数组的第一个元素.有没有办法利用类似这样的命令来获取'mat'字典变量内部数组中的所有相应元素?
该函数scipy.io.loadmat生成一个字典,如下所示:
{'__globals__': [],
'__header__': 'MATLAB 5.0 MAT-file, Platform: MACI, Created on: Wed Sep 24 16:11:51 2014',
'__version__': '1.0',
'a': array([[1, 2, 3]], dtype=uint8),
'b': array([[4, 5, 6]], dtype=uint8)}
Run Code Online (Sandbox Code Playgroud)
听起来你要做的就是用一个带有"a","b"等键的.csv文件作为列名和它们相应的数组作为与每列相关的数据.如果是这样,我建议使用pandas一个格式很好的数据集,可以导出到.csv文件.首先,您需要清除字典的注释成员(所有以"__"开头的键).然后,您希望将字典中的每个项目值转换为pandas.Series对象.然后可以将字典转换为pandas.DataFrame对象,也可以将其保存为.csv文件.您的代码如下所示:
import scipy.io
import pandas as pd
mat = scipy.io.loadmat('matex.mat')
mat = {k:v for k, v in mat.items() if k[0] != '_'}
data = pd.DataFrame({k: pd.Series(v[0]) for k, v in mat.iteritems()})
data.to_csv("example.csv")
Run Code Online (Sandbox Code Playgroud)