如何将字符串数组转换为numpy中的浮点数组?

时间:2010-10-06 21:57:33

标签: python numpy

如何转换

["1.1", "2.2", "3.2"]

[1.1, 2.2, 3.2]

在NumPy?

4 个答案:

答案 0 :(得分:143)

好吧,如果您正在以列表形式阅读数据,只需执行np.array(map(float, list_of_strings))(或等效地使用列表推导)。 (在Python 3中,如果使用list,则需要在map返回值上调用map,因为map现在返回迭代器。)

然而,如果它已经是一个numpy数组的字符串,那么有一个更好的方法。使用astype()

import numpy as np
x = np.array(['1.1', '2.2', '3.3'])
y = x.astype(np.float)

答案 1 :(得分:4)

你也可以使用它

import numpy as np
x=np.array(['1.1', '2.2', '3.3'])
x=np.asfarray(x,float)

答案 2 :(得分:2)

如果你有(或创建)一个字符串,你可以使用 np.fromstring

import numpy as np
x = ["1.1", "2.2", "3.2"]
x = ','.join(x)
x = np.fromstring( x, dtype=np.float, sep=',' )

注意,x = ','.join(x)将x数组转换为字符串'1.1, 2.2, 3.2'。如果您从txt文件中读取一行,则每一行都将是一个字符串。

答案 3 :(得分:2)

另一个选项可能是numpy.asarray

import numpy as np
a = ["1.1", "2.2", "3.2"]
b = np.asarray(a, dtype=np.float64, order='C')

对于Python 2 *:

print a, type(a), type(a[0])
print b, type(b), type(b[0])

导致:

['1.1', '2.2', '3.2'] <type 'list'> <type 'str'>
[1.1 2.2 3.2] <type 'numpy.ndarray'> <type 'numpy.float64'>