我有一个HDF5文件数据集,其中包含不同的数据类型(int和float)。
在numpy数组中读取它时,它会将其检测为np.void类型的数组。
import numpy as np
import h5py
f = h5py.File('Sample.h5', 'r')
array = np.array(f['/Group1/Dataset'])
print(array.dtype)
Image of the data types {print(array.dtype)}
如何将此数据集读入数组,每列与输入的数据类型相同?预先感谢您的答复
答案 0 :(得分:0)
这里有两个简单的示例,展示了两种使用HDF5字段/列名称对数据集的子集进行切片的方法。
第一种方法是在访问数据集时通过切片将数据的子集提取到记录数组。 第二种方法遵循您当前的方法。它将整个数据集提取到记录数组中,然后切片一个新视图以访问数据的子集。
打印语句被广泛使用,因此您可以了解发生了什么。
方法1
real_array= np.array(f['/Group1/Dataset'][:,'XR','YR','ZR'])
print(real_array.dtype)
print(real_array.shape)
方法2
cmplx_array = np.array(f['/Group1/Dataset'])
print(cmplx_array.dtype)
print(cmplx_array.shape)
disp_real = cmplx_array[['XR','YR','ZR']]
print(disp_real.dtype)
print(disp_real.shape)
查看此SO主题,以获取有关将值从Recarray复制到ndarray然后再返回的更多见解。