【问题标题】:easily accessing data in matlab matrices loaded with scipy轻松访问加载了 scipy 的 matlab 矩阵中的数据
【发布时间】:2012-11-21 16:22:16
【问题描述】:

当我使用 scipy.io.loadmat 加载 .mat 文件时,我得到一个难以处理的数据结构,因为我必须猜测数据包含在结构的哪个级别。 numpy 或 scipy 表示将所有内容包装在深层列表中。打印它通常没有帮助,因为它包含大量数据。例如:

from scipy.io import loadmat
mat = loadmat("data.mat")
val = mat["someattribute"] # not what I want, the data I can iterate over is one layer deeper (len(val) == 1)
val = mat["someattribute"][0] # len(val) is some big value

是否有一些简单的方法可以访问这些东西而不必担心它们的表示?我最近从 python 2.6.6 切换到 2.7.3 并注意到 numpy/scipy 库中的表示发生了变化(因此我的代码中断了)。

【问题讨论】:

  • 对不起。我宁愿不发布数据。但要知道,正如我在下面所说,矩阵是作为字典提供给我的。
  • 你解决过这个问题吗?

标签: python numpy scipy mat-file matlab-load


【解决方案1】:

你也许可以逃脱

val = mat['someattribute'].ravel()

如果你知道它是一维数据,这会将 val 展平为一维 np.array

val = mat['someattribute'].squeeze()

这将删除所有len=1 维度(doc)

【讨论】:

  • 矩阵作为字典给了我。
  • @anonymous 您应该在问题中包含该信息。我猜(错了)你正在尝试取出一个数组。您的问题越清楚,您就会得到更好的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-03
  • 2011-06-24
  • 2014-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多