Python 之 h5py 读取 matlab 中 .mat 文件 cell 方法浅析_python 读取mat中的cell-CSDN博客
这篇文章介绍了 1*10 Cell的情况,我提供T*1的情况
我的数据 2588*1,每个Cell是26*26 double:
需要转化为2588*26*26 numpy.ndarray实例
import os
import h5py
import numpy as np
def read_p_same(dir_name: str)
if os.path.exists(dir_name) == False:
raise FileNotFoundError
with h5py.File(dir_name, 'r') as f:
cell_registered_struct = f['cell_registered_struct']
for element in cell_registered_struct['p_same_registered_pairs']:
# !!! The length of element is 2588,
# (It only iterates for 1 time, thereby
# it's not a real for loop albeit a similar
# 'form')
p_same_single = []
for i in range(len(element)):
p_same_single.append(f[element[i]][:])
p_same = np.stack(p_same_single, axis=0)
# Now p_same is a numpy.ndarray with a shape of (2588, 26, 26).
return p_same
# A more concise version
def read_p_same(dir_name: str)
if os.path.exists(dir_name) == False:
raise FileNotFoundError
with h5py.File(dir_name, 'r') as f:
cell_registered_struct = f['cell_registered_struct']
for element in cell_registered_struct['p_same_registered_pairs']:
# !!! The length of element is 2588,
# (It only iterates for 1 time, thereby
# it's not a real for loop albeit a similar
# 'form')
p_same_single = [f[element[i]][:] for i in range(len(element))]
p_same = np.stack(p_same_single, axis=0)
# Now p_same is a numpy.ndarray with a shape of (2588, 26, 26).
return p_same