http://docs.h5py.org/en/stable/strings.html является соответствующей страницей h5py
документов.
In [652]: iostopes_used = np.array([['Element', 'Isotope(s)', 'Null', 'Null', 'Null'], ['Ti', '47Ti', '
...: 49Ti', 'Null', 'Null']])
...:
In [653]: iostopes_used
Out[653]:
array([['Element', 'Isotope(s)', 'Null', 'Null', 'Null'],
['Ti', '47Ti', '49Ti', 'Null', 'Null']], dtype='<U10')
In [654]: f = h5py.File('names.h5','w')
In [655]: iostopes_used_dataset = f.create_dataset("data", data=iostopes_used)
---------------------------------------------------------------------------
....
TypeError: No conversion path for dtype: dtype('<U10')
Если вместо этого мы преобразуем строки Unicode Py3 в строки байтов Py2, сохранение выполняется:
In [656]: iostopes_used_dataset = f.create_dataset("data", data=iostopes_used.astype('S10'))
In [657]: iostopes_used_dataset[:]
Out[657]:
array([[b'Element', b'Isotope(s)', b'Null', b'Null', b'Null'],
[b'Ti', b'47Ti', b'49Ti', b'Null', b'Null']], dtype='|S10')
In [658]: f.close()
===
Другой маршрут - строковые объекты переменной длины, как показано в этом недавнем вопросе SO: Не удалось записать в файл hdf5
In [663]: dt = h5py.special_dtype(vlen=str)
In [665]: f.create_dataset('other', iostopes_used.shape, dtype=dt)
Out[665]: <HDF5 dataset "other": shape (2, 5), type "|O">
In [666]: _[:] = iostopes_used
In [667]: _[:]
Out[667]:
array([['Element', 'Isotope(s)', 'Null', 'Null', 'Null'],
['Ti', '47Ti', '49Ti', 'Null', 'Null']], dtype=object)