【发布时间】:2016-09-09 21:57:46
【问题描述】:
我正在尝试使用 HDF5 数据格式存储大约 3000 个 numpy 数组。数组长度从 5306 到 121999 np.float64
我得到
Object dtype dtype('O') has no native HDF5 equivalent
错误,因为由于数据的不规则性,numpy 使用通用对象类。
我的想法是将所有数组填充到 121999 长度并将大小存储在另一个数据集中。
但是这在空间上似乎效率很低,有没有更好的方法?
编辑:澄清一下,我想存储 3126 个 dtype = np.float64 数组。我将它们存储在 list 中,当 h5py 执行例程时,它会转换为 dtype = object 的数组,因为它们的长度不同。为了说明这一点:
a = np.array([0.1,0.2,0.3],dtype=np.float64)
b = np.array([0.1,0.2,0.3,0.4,0.5],dtype=np.float64)
c = np.array([0.1,0.2],dtype=np.float64)
arrs = np.array([a,b,c]) # This is performed inside the h5py call
print(arrs.dtype)
>>> object
print(arrs[0].dtype)
>>> float64
【问题讨论】:
-
您是要保存一个包含 3000 个子数组(带有 dtype 对象)的数组,还是 3000 个数组,每个数组都带有 dtype float?举一个 2 或 3 个数组的小例子。
-
我在编辑中澄清了它
-
arrs是h5py无法保存的对象数组。您必须将a、b、c保存为单独的datasets。这些数组将是datagroup的元素,您可以使用字典接口与组。
标签: python arrays numpy hdf5 h5py