numpy - Object dtype dtype ('O' ) 没有本地 HDF5 等效项

标签 numpy hdf5

好吧,似乎在堆栈溢出中提出了几个类似的问题,但似乎没有一个回答正确或正确,也没有描述确切的示例。

我在将数组或列表保存到 hdf5 时遇到问题...

我有几个文件包含 (n, 35) 维度的列表,其中每个文件中的 n 可能不同。它们中的每一个都可以使用以下代码保存在 hdf5 中。

hdf = hf.create_dataset(fname, data=d)

但是,如果我想合并它们以在 3d 中制作,则会出现如下错误。

Object dtype dtype('O') has no native HDF5 equivalent



我不知道为什么它会变成 dtype 对象,因为我所做的只是这个
all_data = list()
for fname in file_list:
    d = np.load(fname)
    all_data.append(d)
hdf = hf.create_dataset('all_data', data=all_data)

我怎样才能保存这样的数据?
我尝试了几个测试,当我用
all_data = np.array(all_data)

看起来它在保存 hdf5 时有类似的问题。

同样,如何将这些数据保存在 hdf5 中?

最佳答案

我遇到了类似的问题 h5py ,并使用 array.astype 更改 NumPy 数组的类型为我工作(我相信这会将类型从 dtype('O') 更改为您指定的数据类型)。请参阅下面的代码片段:

import numpy as np

print(X.dtype) 
--> dtype('O')

print(X.astype(np.float64).dtype)
--> dtype('float64')
当我跑 h5.create_dataset通过这种数据类型转换,我能够成功创建一个 h5 数据集。希望这可以帮助!
一个额外的更新:我相信 NumPy 对象类型 'O'当 NumPy 数组本身具有混合元素类型(例如 np.int8np.float32 )时创建。

关于numpy - Object dtype dtype ('O' ) 没有本地 HDF5 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53358689/

相关文章:

python - 需要 Numpy 花哨的索引建议

python - 使用另一个索引数组正确索引多维 Numpy 数组

python - 在Python3中制作简单的图形直方图

c++ - 为非 POD 类型寻找类似于 offsetof() 的东西

python - 为什么我的 PyArrayObject* 数据​​被截断?

python - 如何用给定的索引/坐标填充 numpy 的零数组

python - 在 Python 中加载 csv 并保存 HDF5

java - Python,PyTables,Java-捆绑在一起

python - 在 python 中获取字典并将其写入 HDF5 文件

python-3.x - Pandas - 使用 to_hdf 添加同名数据框使文件大小翻倍