如何转换
["1.1", "2.2", "3.2"]
到
[1.1, 2.2, 3.2]
在NumPy中?如何转换
["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
现在返回迭代器。)astype()
。import numpy as np
x = np.array(['1.1', '2.2', '3.3'])
y = x.astype(np.float)
另一个选项可能是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.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文件中读取一行,则每行已经是字符串了。dtype=float
的 np.array()
:import numpy as np
x = ["1.1", "2.2", "3.2"]
y = np.array(x,dtype=float)
输出:
array([1.1, 2.2, 3.2])
您也可以使用这个
import numpy as np
x=np.array(['1.1', '2.2', '3.3'])
x=np.asfarray(x,float)
import pandas as pd
a = np.array(["1.1", "2.2"], float) # OK
lst = ["1.1", "2.2", "3.2.", ""]
a = np.array(lst, float) # ValueError: could not convert string to float: '3.2.'
a = pd.to_numeric(lst, errors='coerce') # array([1.1, 2.2, nan, nan])
list
)代替Numpy数组。 Numpy数组意在采用同种类型的元素。如果你真的想要不同类型的元素,可以使用对象数组(例如:np.array(['apple', 1.2, 1, {'b'=None, 'c'=object()}], dtype=object)
)。但是,与使用列表相比,对象数组并没有任何显著的优势。 - Joe Kingtonprint(list(y))
输出```[1.1,2.2,3.3][程序已完成]```,按照OP的要求。 - Subham