如何在NumPy中进行以下转换?
["1.1", "2.2", "3.2"] ⟶ [1.1, 2.2, 3.2]
字符串
0h4hbjxa1#
如果你阅读列表中的数据,只需执行np.array(map(float, list_of_strings))(或者等价地,使用列表解析)(在Python 3中,如果你使用map,你需要在map返回值上调用list,因为map现在返回迭代器)。但是,如果它已经是一个numpy字符串数组,有一个更好的方法。使用astype()。
np.array(map(float, list_of_strings))
map
list
astype()
import numpy as np x = np.array(['1.1', '2.2', '3.3']) y = x.astype(np.float)
v64noz0r2#
另一个选项可能是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'>
型
2ul0zpep3#
如果你有(或创建)一个字符串,你可以使用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文件中读取一行,则每行都已经是一个字符串。
x = ','.join(x)
'1.1, 2.2, 3.2'
cetgtptt4#
您可以将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])
pgky5nke5#
你也可以用这个
import numpy as np x=np.array(['1.1', '2.2', '3.3']) x=np.asfarray(x,float)
bnl4lu3b6#
如果你有一个包含无效值的数组,比如一个空字符串(''),那么直接的强制转换会引发一个错误。如果你只是想把这个“有问题”的数组转换成一个numpy浮点数组,然后处理无效值,那么pandas包有一个函数(pandas.to_numeric),它把无效值设置为NaN,把其余的转换为浮点。
''
pandas
pandas.to_numeric
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])
6条答案
按热度按时间0h4hbjxa1#
如果你阅读列表中的数据,只需执行
np.array(map(float, list_of_strings))
(或者等价地,使用列表解析)(在Python 3中,如果你使用map
,你需要在map
返回值上调用list
,因为map
现在返回迭代器)。但是,如果它已经是一个numpy字符串数组,有一个更好的方法。使用
astype()
。字符串
v64noz0r2#
另一个选项可能是numpy.asarray:
字符串
导致:
型
2ul0zpep3#
如果你有(或创建)一个字符串,你可以使用np.fromstring:
字符串
注意,
x = ','.join(x)
将x数组转换为字符串'1.1, 2.2, 3.2'
。如果从txt文件中读取一行,则每行都已经是一个字符串。cetgtptt4#
您可以将
np.array()
与dtype = float
一起使用:字符串
输出量:
型
pgky5nke5#
你也可以用这个
字符串
bnl4lu3b6#
如果你有一个包含无效值的数组,比如一个空字符串(
''
),那么直接的强制转换会引发一个错误。如果你只是想把这个“有问题”的数组转换成一个numpy浮点数组,然后处理无效值,那么pandas
包有一个函数(pandas.to_numeric
),它把无效值设置为NaN,把其余的转换为浮点。字符串