从 python 中的 .mat 文件访问指定的列

Access specified columns from .mat file in python

我总共有 61225 个矩阵,每个矩阵具有相同的变量名和不同的数据。我只对变量名称为 Pose_Para 的文件感兴趣,这是一个 1x7 文件,我只对其中的第 2、3 和 4 列感兴趣。我的问题是如何只访问这些列以获得大小为 [61225 x 3]?

的矩阵

这是我到目前为止所做的。

import glob
from scipy.io import loadmat
    
entries = glob.glob('300W_LP/*/*.mat', recursive=True)
print(len(entries))
for entry in entries:
    para = loadmat(entry, variable_names = ("Pose_Para",))["Pose_Para"]

我假设 para = loadmat(entry, variable_names = ("Pose_Para",))["Pose_Para"] 导致 para 成为一个 7 元素的 numpy 数组。如果是这样,您可以这样做:

import numpy as np

# ...file handling...
allparas = np.empty((len(entries),3))
for ctr,entry in enumerate(entries):
    allparas[ctr,:] = loadmat(entry, variable_names = ("Pose_Para",))["Pose_Para"][1:3]

请注意,您可能需要将 squeeze_me = True 添加到 loadmat 调用中。我不确定 loadmat 是否需要它来生成 7 元素一维 Numpy 数组而不是 1x7 二维数组。

您还可以使用列表理解将 for 循环编写为单行代码:

allparas = np.array([loadmat(entry, variable_names= ("Pose_Para",))["Pose_Para"][1:3] for entry in entries])