如何转换
["1.1", "2.2", "3.2"]
到
[1.1, 2.2, 3.2]
在 NumPy?
好吧,如果你是以列表的形式读取数据,那么只需要执行 np.array(map(float, list_of_strings))(或者等效地使用一个列表内涵)。(在 Python 3中,如果使用 map,则需要对 map返回值调用 list,因为 map现在返回一个迭代器。)
np.array(map(float, list_of_strings))
map
list
但是,如果它已经是一个字符串数组,那么还有一个更好的方法。
import numpy as np x = np.array(['1.1', '2.2', '3.3']) y = x.astype(np.float)
你也可以用这个
import numpy as np x=np.array(['1.1', '2.2', '3.3']) x=np.asfarray(x,float)
如果只有(或创建)一个字符串,可以使用 来自字符串:
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 文件中读取一行,那么每一行就已经是一个字符串。
x = ','.join(x)
'1.1, 2.2, 3.2'
另一个选择可能是 Numpy.asarray:
import numpy as np a = ["1.1", "2.2", "3.2"] b = np.asarray(a, dtype=float) print(a, type(a), type(a[0])) print(b, type(b), type(b[0]))
结果是:
['1.1', '2.2', '3.2'] <class 'list'> <class 'str'> [1.1 2.2 3.2] <class 'numpy.ndarray'> <class 'numpy.float64'>
你可以把 np.array()和 dtype = float一起使用:
np.array()
dtype = float
import numpy as np x = ["1.1", "2.2", "3.2"] y = np.array(x,dtype=float)
产出:
array([1.1, 2.2, 3.2])