如何从 python 中的 .mat 文件(另存为 -v7.3)加载所有变量?

How to load all variables from a .mat file(saved as -v7.3) in python?

我有一个在 matlab 中保存为 -v7.3 的 .mat 文件,其中包含 1000 个名为 x1 到 x1000 的变量。我的 objective 是将所有这些变量传输(或加载)到 X_train 之类的东西中,它将用作基于编码器-解码器的神经网络的输入数据。我可以使用以下代码访问单个变量:

import h5py
with h5py.File('input.mat', 'r') as f:
    x1 = list(f['x1'])

但我想访问所有 1000 个变量并将它们存储在某个地方以将它们提供给我的网络(除了存储它们并将它们提供给网络之外的任何其他方式也很受欢迎)。 所有变量的大小都是 12x24x12。 我还想遍历所有变量并将它们存储在 pandas 数据帧中(我不知道它是如何工作的)除了上面的代码之外还使用下面的代码:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.array(x1))

但是我得到一个错误 'ValueError: Must pass 2-d input' 并且放弃了循环遍历的想法。

我上网查了一下,但只能找到获取变量列表的答案,而不是变量本身,没有解决我的问题。所以简而言之,我需要一种方法来存储或提供所有 1000 个 3-d 变量作为基于编码器-解码器的神经网络的输入。

alist = [f[k][:] for k in f.keys()]

应该将所有数组加载到列表中。

np.stack(alist)

应该创建一个 4 维数组