将包含许多数组的mat文件中的matlab数据转换为numpy数组

问题描述 投票:0回答:1

我有一个包含许多数组的 .mat 文件,并尝试将它们转换为 numpy 数组,但到目前为止尚未成功。

from scipy.io import loadmat
import numpy as np
import pandas as pd

mat = loadmat("FanMap_data.mat")
print(mat.keys())

dict_keys(['header', 'version', 'globals', 'fanmap', 'fanmap1D'])

该文件包含两组 float64 数据的数组“fanmap”和“fanmap1D”。 fanmap 由 1 个形状为 (1,15) 的数组、2 个形状为 (1943,1) 的数组和 26 个形状为(1943,15) 的数组组成 fanmap1D 由 22 个形状为 (1,15) 的数组组成。

我尝试使用pd.DataFrame,但我不知道如何读取这么多数组。

我希望读取所有数组并将它们转换为 numpy 数组。

python pandas dataframe matlab mat
1个回答
0
投票

您可以迭代

mat
字典的键并将每个数组转换为 NumPy 数组。一种方法如下:

from scipy.io import loadmat
import numpy as np

mat = loadmat("FanMap_data.mat")
fanmap_arrays = {key: np.array(mat[key]) for key in mat['fanmap'].dtype.names}
fanmap1D_arrays = {key: np.array(mat[key]) for key in mat['fanmap1D'].dtype.names}

print("Arrays in 'fanmap':")
for key, value in fanmap_arrays.items():
    print(key, value.shape)

print("\nArrays in 'fanmap1D':")
for key, value in fanmap1D_arrays.items():
    print(key, value.shape)

© www.soinside.com 2019 - 2024. All rights reserved.