H5py存储字符串列表的列表

8

在h5py中有没有可能创建一个由字符串列表组成的数据集。我尝试创建一个可变长度的嵌套数据类型,但这导致我的Python解释器出现分段错误。

def create_dataset(h5py_file):
    data = [['I', 'am', 'a', 'sentecne'], ['another', 'sentence']]
    string_dt = h5py.special_dtype(vlen=str)
    nested_dt = h5py.special_dtype(vlen=string_dt)
    h5py_file.create_dataset("sentences", data=data, dtype = nested_dt)
2个回答

8

如果您不打算编辑hdf5文件(并潜在使用更长的字符串),您也可以简单地使用:

h5py_file.create_dataset("sentences", data=np.array(data, dtype='S'))

如果您的数据包含非ASCII字符,这也会导致问题,请在此处阅读有关在HDF中存储字符串的更多信息:http://docs.h5py.org/en/stable/strings.html - jan-glx

2

如果您按照这个帖子建议的定义数据为 dtype=object 的 numpy 数组,而不是列表嵌套列表,那么您应该可以获得所需的功能。

def create_dataset(h5py_file):
    data = np.array([['I', 'am', 'a', 'sentence'], ['another', 'sentence']], dtype=object)
    string_dt = h5py.special_dtype(vlen=str)
    h5py_file.create_dataset("sentences", data=data, dtype=string_dt)

类型错误:对象数据类型 dtype('O') 没有本地 HDF5 等效项 - 您的参考与 HDF 文件无关。 - Ed S.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接