我正在尝试使用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
可变长度内部数组的清除方法: http://docs.h5py.org/en/latest/special.html?highlight=dtype#arbitrary-vlen-data
仅适用于1D数组,https://github.com/h5py/h5py/issues/876
看起来你试过像是:
但是,如果将数组另存为单独的数据集,则它可以工作:
以及访问组中的所有数据集:
相关问题 更多 >
编程相关推荐