我正在运行python 3.5并尝试将大量字符串转换为numpy数组。
我使用answer from stack overflow将此代码放在一起。
import ast
import numpy as np
str = '["8.4","4.3E-7"]'
arr = ast.literal_eval(str)
x = np.array(arr, dtype='|S4')
y = x.astype(np.float32)
我收到了以下值错误
ValueError: could not convert string to float: '4.3E'
str是一个示例字符串,大多数数字都没有E-something模式,但偶尔会发生这种情况,我的代码会挂断。
在这种情况下有没有办法将字符串转换为numpy数组?
答案 0 :(得分:2)
您的输入包含数字(4.3E-7
)的6个字符的长字符串表示形式,但您告诉numpy
最多只导入4个字符。将dtype='|S4'
更改为dtype='|S6'
,或者确实将其完全删除,让numpy找出字符串的长度。另外,请务必避免覆盖str
以避免头痛!
import ast
import numpy as np
s = '["8.4","4.3E-7"]' # don't overwrite str!
arr = ast.literal_eval(s)
x = np.array(arr) # changed length
y = x.astype(np.float32)