参考文献Python快速转换numpy数组中Nan和Inf的方法
在使用numpy数组的过程中时常会出现nan或者inf的元素,可能会造成数值计算时的一些错误。这里提供一个numpy库函数的用法,使nan和inf能够最简单地转换成相应的数值。
numpy.nan_to_num(x):
使用0代替数组x中的nan元素,使用有限的数字代替inf元素
主要用法如下
a = np.array([1,2,-1,np.nan,np.inf])
a
array([ 1., 2., -1., nan, inf])
np.nan_to_num(a)
array([ 1.00000000e+000, 2.00000000e+000, -1.00000000e+000,
0.00000000e+000, 1.79769313e+308])
和此类问题相关的还有一组判断用函数,包括:
isinf # 无穷
isneginf # 负无穷
isposinf # 正无穷
isnan # 空值
isfinite #如果x是正无穷大或负无穷大,则返回True,否则返回False
使用方法也很简单,以isnan举例说明
a[np.isnan(a)]=0
a
array([ 1., 2., -1., 0., inf])
a[np.isinf(a)]=0
a
array([ 1., 2., -1., 0., 0.])
最后来一些numpy.math模块内置函数
python中math模块常用的方法整理
ceil:取大于等于x的最小的整数值,如果x是一个整数,则返回x
copysign:把y的正负号加到x前面,可以使用0
cos:求x的余弦,x必须是弧度
degrees:把x从弧度转换成角度
e:表示一个常量
exp:返回math.e,也就是2.71828的x次方
expm1:返回math.e的x(其值为2.71828)次方的值减1
fabs:返回x的绝对值
factorial:取x的阶乘的值
floor:取小于等于x的最大的整数值,如果x是一个整数,则返回自身
fmod:得到x/y的余数,其值是一个浮点数
frexp:返回一个元组(m,e),其计算方式为:x分别除0.5和1,得到一个值的范围
fsum:对迭代器里的每个元素进行求和操作
gcd:返回x和y的最大公约数
hypot:如果x是不是无穷大的数字,则返回True,否则返回False
isfinite:如果x是正无穷大或负无穷大,则返回True,否则返回False
isinf:如果x是正无穷大或负无穷大,则返回True,否则返回False
isnan:如果x不是数字True,否则返回False
ldexp:返回x*(2**i)的值
log:返回x的自然对数,默认以e为基数,base参数给定时,将x的对数返回给定的base,计算式为:log(x)/log(base)
log10:返回x的以10为底的对数
log1p:返回x+1的自然对数(基数为e)的值
log2:返回x的基2对数
modf:返回由x的小数部分和整数部分组成的元组
pi:数字常量,圆周率
pow:返回x的y次方,即x**y
radians:把角度x转换成弧度
sin:求x(x为弧度)的正弦值
sqrt:求x的平方根
tan:返回x(x为弧度)的正切值
trunc:返回x的整数部分