【问题标题】:How to load a Matlab structure (dictionary) as a Python dictionary?如何将 Matlab 结构(字典)加载为 Python 字典?
【发布时间】:2020-07-10 19:15:17
【问题描述】:

我收到了一些作为 Matlab 字典的大块数据,我的任务是在 Python 上使用它。在这里,我包含了我的matlab dictionary 的一小部分。

到目前为止,我尝试解压并在 python 中制作字典的是:

import scipy.io as spio
mydata = spio.loadmat('testdict.mat')
new = mydata.get('testdict')

如果您可以从使用loadmat 加载.mat 文件中看到,我会得到一个数组数组。在我的原始字典中,我有 72 个字段名,我想在 Python 中创建键。我只是无法围绕如何迭代这个数组来做到这一点。

在这里你可以看到我得到的一些输出:

【问题讨论】:

  • 你能分享一些输出吗?
  • @AMC 确定我添加了我得到的图像

标签: python matlab dictionary


【解决方案1】:

如果我理解你想要做什么,你想遍历 可以说这个来自 matplotlib 的 numpy 数组。

经过一番酝酿,我想出了另一个使用您提供的数据的尝试。在这次尝试中,我迭代了数组数组,同时将 numpy 数组的字段名称和数组的最内层值分别作为键和值添加到字典中:

import scipy.io as spio
import numpy as np

mydata = spio.loadmat('testdict.mat')
new = mydata.get('testdict')

recordarr = np.rec.array(new)
myDictionary = {}
myList = []

for field in recordarr.dtype.names: #iterates through field names of numpy array
    for array in recordarr[field]: #iterates through the array of each numpy array
        for value in array:
            myList.append(np.squeeze(value.flatten()[0]))
            #print(np.squeeze(value.flatten()[0]))
        
    myDictionary[field] = myList
    myList = []
    #break

这是以下代码从 myDictionary 变量中的名为 year 的键中请求值的结果:

In [153]: myDictionary['year']
Out[153]: [1852, 1852, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1854]

如果给定代码中的注释行未注释,则可以将上述结果视为输出。

link 帮助我了解了如何格式化 matplotlib numpy 数组以访问其字段值。

这个post 还帮助我了解了如何从新格式化的 matplotlib numpy 数组中获取值。

上一次尝试

这是一个遍历所需数组的尝试,虽然不是完整的答案,但仍然是一个难题。

如果您能够在这些数组中访问所需的数组,也许您可​​以使用类似于以下内容的方式遍历它们:

免责声明:不确定键的哪些值被假定为整数。

arrays = [['Hello'], ['World'], ['Foobar'], ['Alice'], ['Bob'], ['Chuck']]
d = {}
n = 0

for array in arrays:
    for element in array:
        d[element] = n
        n += 1
    
print(d)

输出

{'Hello': 0, 'World': 1, 'Foobar': 2, 'Anne': 3, 'Bob': 4, 'Chuck': 5}

【讨论】:

    猜你喜欢
    • 2020-08-15
    • 2019-11-17
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 2011-06-25
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多