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

w9apscun  于 11个月前  发布在  其他
关注(0)|答案(6)|浏览(163)

如何在NumPy中进行以下转换?

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

字符串

0h4hbjxa

0h4hbjxa1#

如果你阅读列表中的数据,只需执行np.array(map(float, list_of_strings))(或者等价地,使用列表解析)(在Python 3中,如果你使用map,你需要在map返回值上调用list,因为map现在返回迭代器)。
但是,如果它已经是一个numpy字符串数组,有一个更好的方法。使用astype()

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

字符串

v64noz0r

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'>

2ul0zpep

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文件中读取一行,则每行都已经是一个字符串。

cetgtptt

cetgtptt4#

您可以将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])

pgky5nke

pgky5nke5#

你也可以用这个

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

字符串

bnl4lu3b

bnl4lu3b6#

如果你有一个包含无效值的数组,比如一个空字符串(''),那么直接的强制转换会引发一个错误。如果你只是想把这个“有问题”的数组转换成一个numpy浮点数组,然后处理无效值,那么pandas包有一个函数(pandas.to_numeric),它把无效值设置为NaN,把其余的转换为浮点。

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])

字符串

相关问题