简体   繁体   English

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

[英]How to convert an array of strings to an array of floats in numpy?

How to convert如何转换

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

to

[1.1, 2.2, 3.2]

in NumPy?在 NumPy?

Well, if you're reading the data in as a list, just do np.array(map(float, list_of_strings)) (or equivalently, use a list comprehension). 好吧,如果您正在以列表形式读取数据,只需执行np.array(map(float, list_of_strings)) (或等效地使用列表np.array(map(float, list_of_strings)) )。 (In Python 3, you'll need to call list on the map return value if you use map , since map returns an iterator now.) (在Python 3中,如果使用map ,则需要在map返回值上调用list ,因为map现在返回一个迭代器。)

However, if it's already a numpy array of strings, there's a better way. 但是,如果它已经是一个numpy字符串数组,那么有一种更好的方法。 Use astype() . 使用astype()

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

You can use this as well 你也可以使用它

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

If you have (or create) a single string, you can use np.fromstring : 如果您有(或创建)单个字符串,则可以使用np.fromstring

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

Note, x = ','.join(x) transforms the x array to string '1.1, 2.2, 3.2' . 注意, x = ','.join(x)将x数组转换为字符串'1.1, 2.2, 3.2' If you read a line from a txt file, each line will be already a string. 如果从txt文件中读取一行,则每行都将是一个字符串。

Another option might be numpy.asarray : 另一种选择可能是numpy.asarray

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

For Python 2*: 对于Python 2 *:

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

resulting in: 导致:

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

You can use np.array() with dtype = float :您可以将np.array()与 dtype dtype = float一起使用:

import numpy as np

x = ["1.1", "2.2", "3.2"]
y = np.array(x,dtype=float)

Output: Output:

array([1.1, 2.2, 3.2])

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM