【发布时间】:2019-08-02 03:30:00
【问题描述】:
我有一个 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)}
如何将此数据集读入数组,每列的数据类型与输入的数据类型相同?提前感谢您的回复
【问题讨论】:
-
如图所示,数组中的数据与 HDF5 数据集的类型相同。在这种情况下,ID 和 DOMAIN_ID 是整数 (i8),其他 XR、YR、ZR 等是实数/浮点数 (f8)。当存在混合数据类型时,使用结构化数组或记录数组。 (这些数组相似但不相同。)现在,如果您想要一个所有数据类型都相同的 ndarray,您将必须从 HDF5 数据集或上面提取的数组中切片数据的子集(使用适当的索引) 我将尝试创建一个示例(没有 HDF5 文件很难做到)。
-
只需按名称访问数组的每个
field(不是列)。array['ID'],array['RXI']. -
我会使用
arr = f['/Group1/Dataset'][:]语法加载数据集。根据h5py文档,这是首选方式。无论哪种方式,您都会在 dtype 和布局中获得与dataset匹配的结构化数组。