2024-05-23 15:26:16 发布
网友
考虑数组
x = np.array(['1', '2', 'a'])
绑定以转换为浮点数组会引发异常
x.astype(np.float) ValueError: could not convert string to float: a
numpy是否提供了任何有效的方法将其强制转换为数值数组,用NAN之类的东西替换非数值?
或者,是否有一个有效的numpy函数相当于np.isnan,但它也测试非数字元素,如字母?
np.isnan
如果您碰巧也在使用pandas,那么可以使用^{}方法:
In [1]: import numpy as np In [2]: import pandas as pd In [3]: x = np.array(['1', '2', 'a']) In [4]: pd.to_numeric(x, errors='coerce') Out[4]: array([ 1., 2., nan])
可以使用^{}将字符串数组转换为浮点数组(带NaNs):
In [83]: np.set_printoptions(precision=3, suppress=True) In [84]: np.genfromtxt(np.array(['1','2','3.14','1e-3','b','nan','inf','-inf'])) Out[84]: array([ 1. , 2. , 3.14 , 0.001, nan, nan, inf, -inf])
以下是识别“数字”字符串的方法:
In [34]: x Out[34]: array(['1', '2', 'a'], dtype='|S1') In [35]: x.astype('unicode') Out[35]: array([u'1', u'2', u'a'], dtype='<U1') In [36]: np.char.isnumeric(x.astype('unicode')) Out[36]: array([ True, True, False], dtype=bool)
注意,“numeric”是指只包含数字字符的unicode,即具有unicode数值属性的字符。它不包括小数点。因此u'1.3'不被视为“数字”。
u'1.3'
如果您碰巧也在使用pandas,那么可以使用^{} 方法:
可以使用^{} 将字符串数组转换为浮点数组(带NaNs):
以下是识别“数字”字符串的方法:
注意,“numeric”是指只包含数字字符的unicode,即具有unicode数值属性的字符。它不包括小数点。因此
u'1.3'
不被视为“数字”。相关问题 更多 >
编程相关推荐