【发布时间】:2021-12-22 07:12:57
【问题描述】:
也许这个问题很愚蠢,但到目前为止我还没有找到解决方案。 我收到了来自其他人的代码,他可能正在使用与我不同的集合(例如 Python 2 而不是 3 等)。 所以我做了一些小改动以使事情正常进行,但我陷入了与 h5py 相关的一个可能简单的问题。
它崩溃的代码部分如下所示:
labels_ALL = ['ionic_str','psi0','psi1','psi2','psid','zeta','sig0','sig1','sig2','sigd','sig0_eq','sig1_eq','sig2_eq','sigd_eq','ch_bal_EDL','ch_bal_aq', 'sum_resid']
units_ALL = ['(mol/L)','(V)','(V)','(V)','(V)','(V)','(C/m**2)','(C/m**2)','(C/m**2)','(C/m**2)','(mol(eq))','(mol(eq))','(mol(eq))','(mol(eq))','(C/m**2)','(mol(eq)/L)',' ']
for i in range(len(Labels)):
labels_ALL.append(Labels[i])
units_ALL.append('(mol/L)')
base.create_dataset('Labels', data=labels_ALL)
base.create_dataset('Units', data=units_ALL)
问题似乎出在base.create_dataset:
Traceback (most recent call last):
File "C:\Users\DaniJ\Documents\PostDoc_Jena\Trips, Conf, etc\Sinfonia Workshop\Exercise_1\exercise_1_SINFONIA_for_One\NR_chem_SINGLE_NoEu.py", line 252, in <module>
base.create_dataset('Labels', data=labels_ALL)
File "C:\Users\DaniJ\anaconda3\lib\site-packages\h5py\_hl\group.py", line 136, in create_dataset
dsid = dataset.make_new_dset(self, shape, dtype, data, **kwds)
File "C:\Users\DaniJ\anaconda3\lib\site-packages\h5py\_hl\dataset.py", line 118, in make_new_dset
tid = h5t.py_create(dtype, logical=1)
File "h5py\h5t.pyx", line 1634, in h5py.h5t.py_create
File "h5py\h5t.pyx", line 1656, in h5py.h5t.py_create
File "h5py\h5t.pyx", line 1717, in h5py.h5t.py_create
TypeError: No conversion path for dtype: dtype('<U10')
变量 base 似乎是一个 h5py._hl.files.File 变量。
有人可以解决这个问题吗?
谢谢
最好的问候, 丹妮
【问题讨论】:
-
错误信息 (
No conversion path for dtype: dtype('<U10')) 指的是 HDF5(和 h5py)不支持的 Unicode 字符。您必须在保存之前将 Unicode 转换为字节字符串。您的代码未显示labels值的分配,因此我无法重现该问题。如果我注释掉for i in range():循环,代码就可以工作,并且只将labels_ALL和units_ALL的原始值保存到数据集中。 -
标签基本上是一个字符串列表,例如
Labels = ['H+','Na+','Cl-','OH-','>SOH_x','>SO-_x','>SONa_x','>SOH2+_x','>SOH2Cl_x','>SOH_y','>SO-_y','>SONa_y'] -
嗯...不是我对
Labels的期望。 :-( 如果Labels是 NumPy 字符串数组,您将收到dtype('<U10')错误。当我添加该行(并包含for循环)时,您的代码按预期工作。如果我转换,我可以重现该错误List 到 NumPy 数组。
标签: python version spyder h5py dtype