我有一个字符串如下:
>>> a
'0 911 872.9 354.9 901.9 395.0 904.6 414.0 903.8 400.5'
现在我希望将其转换为数组:
>>> b
array([ 0. , 911. , 872.9, 354.9, 901.9, 395. , 904.6, 414. ,
903.8, 400.5])
最恐怖的做法是什么?
答案 0 :(得分:7)
import numpy as np
np.fromstring(a, dtype=float, sep=' ')
<强>演示:强>
>>> np.fromstring('0 911 872.9 354.9 901.9 395.0 904.6 414.0 903.8 400.5', dtype=float, sep=' ')
array([ 0. , 911. , 872.9, 354.9, 901.9, 395. , 904.6, 414. , 903.8, 400.5])
答案 1 :(得分:3)
最简单的方法是根据空格分割字符串,然后将字符串数据映射到float。如果你不想创建扔掉中间字符串,你可以使用imap。另外我建议创建双精度数组来减少精度误差。
<强>演示强>
>>> from array import array
>>> from itertools import imap
>>> array('d', imap(float, a.split()))
array('d', [0.0, 911.0, 872.9, 354.9, 901.9, 395.0, 904.6, 414.0, 903.8, 400.5])
>>>
答案 2 :(得分:3)
b = array([float(x) for x in a.split()])
答案 3 :(得分:0)
b = map(lambda x: float(x), x.split())