我希望下面的代码能工作,但不能。
import h5py
import numpy as np
with h5py.File('file.hdf5','w') as hf:
dt = h5py.special_dtype(vlen=str)
feature_names = np.array(['a', 'b', 'c'])
hf.create_dataset('feature names', data=feature_names, dtype=dt)
我收到错误消息TypeError: No conversion path for dtype: dtype('<U1')
。以下代码确实有效,但是使用for循环复制数据对我来说似乎有点笨拙。 是否有更直接的方法?我希望能够将字符串序列直接传递到create_dataset
函数中。
import h5py
import numpy as np
with h5py.File('file.hdf5','w') as hf:
dt = h5py.special_dtype(vlen=str)
feature_names = np.array(['a', 'b', 'c'])
ds = hf.create_dataset('feature names', (len(feature_names),), dtype=dt)
for i in range(len(feature_names)):
ds[i] = feature_names[i]
注意:我的问题从this answer到Storing a list of strings to a HDF5 Dataset from Python,但是我不认为它是该问题的重复。
答案 0 :(得分:1)
您几乎做到了,缺少的细节是将dtype
传递给np.array
:
import h5py
import numpy as np
with h5py.File('file.hdf5','w') as hf:
dt = h5py.special_dtype(vlen=str)
feature_names = np.array(['a', 'b', 'c'], dtype=dt)
hf.create_dataset('feature names', data=feature_names)
PS:对我来说,这似乎是个错误-create_dataset
忽略了给定的dtype
,并且不将其应用于给定的data
。