Python h5py:如何抽象索引
我有一个HDF5文件,其中包含我当前索引的子组,如:Python h5py:如何抽象索引,python,numpy,indexing,h5py,Python,Numpy,Indexing,H5py,我有一个HDF5文件,其中包含我当前索引的子组,如: file = h5py.File(filename, 'r') data = np.array(file[index1][index2][index3]) 我宁愿抽象这些索引并传递一个列表(index=[index1,index2,index3]),但我想不出比以下更有效的实现方法: indices = [index1, index2, index3] file = h5py.File(filename, 'r') data = file
file = h5py.File(filename, 'r')
data = np.array(file[index1][index2][index3])
我宁愿抽象这些索引并传递一个列表(index=[index1,index2,index3]
),但我想不出比以下更有效的实现方法:
indices = [index1, index2, index3]
file = h5py.File(filename, 'r')
data = file
for i in indices:
data = data[i]
data = np.array(data)
这是可行的,但我希望这个问题有一个简单的解决办法。我不完全理解你想做什么
index1、index2和index3是根级别的所有数据集(aka 文件组,因此您有
、/index1
和/index2
)/index3
- 或者
是一个组,index1
是一个子组,index2
是一个组 数据集?(因此路径是index3
?)/index1/index2/index3
indices = [index1, index2, index3]
file = h5py.File(filename, 'r')
for i in indices:
arr = file[i][:] # returns a np.array, one per loop
如果索引定义数据集的路径,则返回1个数组
indices = [index1, index2, index3]
file = h5py.File(filename, 'r')
path = '/'+'/'.join(indices)
arr = file[path][:] # returns 1 np.array
我不完全明白你想做什么
index1、index2和index3是根级别的所有数据集(aka 文件组,因此您有
、/index1
和/index2
)/index3
- 或者
是一个组,index1
是一个子组,index2
是一个组 数据集?(因此路径是index3
?)/index1/index2/index3
indices = [index1, index2, index3]
file = h5py.File(filename, 'r')
for i in indices:
arr = file[i][:] # returns a np.array, one per loop
如果索引定义数据集的路径,则返回1个数组
indices = [index1, index2, index3]
file = h5py.File(filename, 'r')
path = '/'+'/'.join(indices)
arr = file[path][:] # returns 1 np.array
难道
h5py
没有充分解释如何索引组和数据集吗
文件
和组由Pythondict
建模,您可以在其中使用关键字选择下一个级别<代码>文件['group1']['group2']['dataset1']。数据集可以像数组一样编制索引,也可以使用[:]
作为一个整体加载
名字可以串在一起,例如
file['group1/group2/dataset1'][:]
虽然我还没有测试过这个,但我不认为有任何“效率”差异。与dicts
一样,在加载数据集之前,不会加载任何内容(很多)
顺便说一句,“一行”从任何角度来看都不是“有效的”(除非你正在计算行:)。难道
h5py
没有充分解释如何索引组和数据集吗
文件
和组由Pythondict
建模,您可以在其中使用关键字选择下一个级别<代码>文件['group1']['group2']['dataset1']。数据集可以像数组一样编制索引,也可以使用[:]
作为一个整体加载
名字可以串在一起,例如
file['group1/group2/dataset1'][:]
虽然我还没有测试过这个,但我不认为有任何“效率”差异。与dicts
一样,在加载数据集之前,不会加载任何内容(很多)
顺便说一句,“一行”从任何角度来看都不是“有效的”(除非您正在计算行:)。文件是什么类型的对象?如果它是一个numpy数组,我想它应该和做一样简单:
data=file[tuple(index)]
file
是一个HDF5文件对象:什么类型的对象是file
?如果它是一个numpy数组,我想它应该和做一样简单:data=file[tuple(index)]
file
是一个HDF5文件对象:在这种情况下,我在数行。也许我应该更迂腐地使用高效的语言。非常感谢。我不知道名字可以串在一起,这很有帮助。在这种情况下,我在数行。也许我应该更迂腐地使用高效的语言。非常感谢。我没有意识到名字可以串在一起,这很有帮助。是的,我的索引形成了数据集的路径,所以后者是完美的,谢谢!是的,我的索引形成了数据集的路径,因此后者非常完美,谢谢!