我有一个5组h5文件,每组包含一个3D数据集。我希望构建一个for循环,允许我将每个组提取到一个numpy数组中,并将numpy数组分配给具有组头名称的对象。我能够得到许多不同的方法来处理一个组,但是当我试图构建一个for循环来应用于所有5个组的代码时,它就会中断。例如:
import h5py as h5
import numpy as np
f = h5.File("FFM0012.h5", "r+") #read in h5 file
print(list(f.keys())) #['FFM', 'Image'] for my dataset
FFM = f['FFM'] #Generate object with all 5 groups
print(list(FFM.keys())) #['Amp', 'Drive', 'Phase', 'Raw', 'Zsnsr'] for my dataset
Amp = FFM['Amp'] #Generate object for 1 group
Amp = np.array(Amp) #Turn into numpy array, this works.
现在,当我尝试对for循环应用相同的逻辑时:
h5_keys = []
FFM.visit(h5_keys.append) #Create list of group names ['Amp', 'Drive', 'Phase', 'Raw', 'Zsnsr']
for h5_key in h5_keys:
tmp = FFM[h5_key]
h5_key = np.array(tmp)
print(Amp[30,30,30]) #To check that array is populated
当我运行这段代码时,我得到“NameError:name'Amp'is not defined”。我尝试在for循环之前初始化numpy数组:
h5_keys = []
FFM.visit(h5_keys.append) #Create list of group names
Amp = np.array([])
for h5_key in h5_keys:
tmp = FFM[h5_key]
h5_key = np.array(tmp)
print(Amp[30,30,30]) #To check that array is populated
这将产生错误消息“IndexError:数组的索引太多”
我还尝试生成一个字典并从字典中创建numpy数组。这是一个类似的故事,我可以让代码为一个h5组工作,但当我构建for循环时,它就崩溃了。你知道吗
如有任何建议,我们将不胜感激!你知道吗
在学习Python之前,您似乎已经开始使用
h5py
和numpy
尝试这个基本的python循环,注意
i
的值:f
是文件。你知道吗是
group
是一个数据集。有多种方法可以将数据集加载到numpy数组中。我相信
[...]
切片是当前的首选。.value
以前用过,现在是deprecated(loading dataset)是一个数组。你知道吗
应该从
FFM
组创建数组列表。你知道吗如果形状兼容,则可以将数组连接到一个数组中:
等等
应该是由数据集名称键入的数组字典。你知道吗
在Python中,列表和字典是积累对象的方式。
h5py
组的行为很像字典。数据集的行为与numpy数组非常相似,尽管它们在加载[...]
之前一直保留在磁盘上。你知道吗相关问题 更多 >
编程相关推荐