我想将数字和字符串放入同一个 numpy 数组中。但是,我很少(很难复制,但有时)会遇到一个错误,其中数字到字符串的转换导致无法反向转换为小数的值(即,我得到“9.8267567e”,而不是“9.8267567” e-5”在数组中)。这在写入文件后会导致问题。这是我正在做的一个例子(尽管规模要小得多):
import numpy as np
x = np.array(.94749128494582)
y = np.array(x, dtype='|S100')
我的理解是这应该允许 100 个字符串字符,但有时我会在 ~10 之后看到一个截止点。我应该分配另一种类型,还是限制数组 (x) 中字符数的方法?
请您参考如下方法:
首先,x = np.array(.94749128494582) 可能没有按照您的想法进行,因为传递给 np.array 的参数应该是某种序列或带有数组接口(interface)的东西。也许你的意思是 x = np.array([.94749128494582])?
现在,至于正确保留字符串,您可以使用
来解决这个问题y = np.array(x, dtype=object)
但是,正如 Joe 在他的评论中提到的那样,它不是很 numpythonic,您也可以使用普通的旧 python 列表。
我建议仔细检查为什么您似乎有这种要求将字符串和数字保存在同一个数组中,我觉得您可能设置了不适当的数据结构并且可以从重新设计/重构中受益。 numpy 数组用于快速数值运算,它们并不真正适合用于字符串操作或用作某种存储/数据库。
