python - 无法将 dict 保存到 mat 文件

标签 python matlab numpy io scipy

我正在尝试将其值为不同长度的 numpy 数组的字典保存到 mat 文件中,以便协作者可以在 MATLAB 中将字典作为元胞数组加载。

输入示例:

 data={traces: {0: array([], dtype=float64), 1: array([], dtype=float64), 
 2: array([], dtype=float64), 3: array([], dtype=float64), 
 4: array([], dtype=float64), 5: array([], dtype=float64), 
 6: array([], dtype=float64), 7: array([], dtype=float64), 
 8: array([], dtype=float64), 9: array([], dtype=float64)}}

savemat('test.mat', mdict=data)

但是,我收到错误:

 TypeError: Could not convert {0: array([], dtype=float64), 1: array([], dtype=float64), 
 2:array([], dtype=float64), 3: array([], dtype=float64), 4: array([], dtype=float64), 
 5:  array([], dtype=float64), 6: array([], dtype=float64), 7: array([], dtype=float64), 
 8: array([], dtype=float64), 9: array([], dtype=float64)} (type <type 'dict'>) to array

如何将这本词典保存到 mat 文件中?

最佳答案

您正在定义一个带有键“轨迹”和字典值的字典。删除“痕迹”,将键值替换为字符串而不是 int (0) 或数字字符串 ('0'),并正常保存在 Python 中。

from scipy.io import savemat
from numpy import *

data={'t0': array([], dtype=float64), 't1': array([], dtype=float64), 
 't2': array([], dtype=float64), 't3': array([], dtype=float64), 
 't4': array([], dtype=float64), 't5': array([], dtype=float64), 
 't6': array([], dtype=float64), 't7': array([], dtype=float64), 
 't8': array([], dtype=float64), 't9': array([], dtype=float64)}

# print data
savemat('test.mat', data, oned_as='row')

您可以通过

在 MATLAB 中加载
traces = load('test.mat'); 

关于python - 无法将 dict 保存到 mat 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12571879/

相关文章:

python - edX LMS 端口 8000 已在使用中(即使在终止进程之后)

python - Jupyter笔记本,从单元格输出多个表达式

python - 将流分成具有相等计数的箱

python - 使用 json_normalize 通过嵌套数组规范化 json

Python看门狗,当修改某些文件时,仅创建修改的目录

Python:获取唯一的元组,使得所有元组中的元素都是不相交的

python - 从一个 numpy 数组中删除另一个 numpy 数组中的元素

algorithm - Matlab 在使用 "inv"计算逆时是否使用任何重新排序算法

python - python 的 matlab 引擎中的 save() 命令

matlab 从 datenum 中省略毫秒