如何在 numpy 中将字符串数组转换为浮点数组?
- 2025-03-13 09:00:00
- admin 原创
- 78
问题描述:
如何在 NumPy 中进行以下转换?
["1.1", "2.2", "3.2"] ⟶ [1.1, 2.2, 3.2]
解决方案 1:
好吧,如果你以列表形式读取数据,只需执行(或等效地,使用列表推导)。(在 Python 3 中,如果你使用,np.array(map(float, list_of_strings))
则需要调用list
返回值,因为现在返回一个迭代器。)map
`map`map
但是,如果它已经是一个字符串的 numpy 数组,那么还有更好的方法。使用astype()
。
import numpy as np
x = np.array(['1.1', '2.2', '3.3'])
y = x.astype(np.float)
解决方案 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'>
解决方案 3:
如果您有(或创建)一个字符串,则可以使用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 文件中读取一行,那么每一行都将是一个字符串。
解决方案 4:
您可以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])
解决方案 5:
你也可以使用这个
import numpy as np
x=np.array(['1.1', '2.2', '3.3'])
x=np.asfarray(x,float)
解决方案 6:
如果您有一个包含无效值(例如空字符串 ( ''
))的数组,那么直接转换将引发错误。如果您只想将这个“有问题”的数组转换为 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])
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD