[转载] python 中numpy快速去除nan, inf的方法

参考链接: Python中的numpy.isinf

参考文献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的整数部分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值