Python - 将字符串解析为Float数组?

时间:2013-10-03 07:22:31

标签: python numpy

我有一个字符串如下:

>>> 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])

最恐怖的做法是什么?

4 个答案:

答案 0 :(得分:7)

使用numpy.fromstring

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())