NumPy其他杂项

IEEE 754 浮点特殊值

在 NumPy 中定义的特殊值可以通过:nan,inf,

NaNs 可以用作简陋的占位类型(如果你并不在乎初始的值是什么的话)

注意:不能使用相等来测试 NaN。例如:

>>> myarr = np.array([1., 0., np.nan, 3.])>>> np.nonzero(myarr == np.nan)(array([], dtype=int64),)>>> np.nan == np.nan  # is always False! Use special numpy functions instead.False>>> myarr[myarr == np.nan] = 0. # doesn't work>>> myarrarray([  1.,   0.,  NaN,   3.])>>> myarr[np.isnan(myarr)] = 0. # use this instead find>>> myarrarray([ 1.,  0.,  0.,  3.])

其他的相关的特殊值判断函数

isinf():    True if value is infisfinite(): True if not nan or infnan_to_num(): Map nan to 0, inf to max float, -inf to min float

除了从结果中排除nans之外,以下内容对应于常用函数:

nansum()nanmax()nanmin()nanargmax()nanargmin()>>> x = np.arange(10.)>>> x[3] = np.nan>>> x.sum()nan>>> np.nansum(x)42.0

NumPy 如何处理数字异常的

默认值为 Warn 表示无效、Divide和溢出,Ignore表示下溢。
但是这是可以更改的,并且可以针对不同种类的异常单独设置。不同的行为包括:

  • 'ignore':发生异常时不采取任何措施。
  • 'warn':打印 RuntimeWarning (通过Python warnings
  • 模块)。
  • 'raise':引发 FloatingPointError
  • 'call':调用使用 seterrcall 函数指定的函数。
  • 'print':直接打印警告stdout。
  • 'log':在 seterrcall 指定的Log对象中记录错误。

可以针对各种错误或特定错误设置这些行为:

  • all:适用于所有数字异常
  • 无效:生成NaN时
  • 除以:除以零(对于整数!)
  • 溢出:浮点溢出
  • 下溢:浮点下溢

注意,整数除零由相同的机器处理。这些行为是基于每个线程设置的。

。。。。。。。。。。。。。

作者:柯广

篇幅有限更多请见扩展链接:http://www.mark-to-win.com/tutorial/52206.html

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章