【问题标题】:Nan to Num PythonNan to Num Python
【发布时间】:2015-03-14 03:06:51
【问题描述】:

我有多个数组,用于计算线性回归,但有时它给我 0/0 值,这给了我一个 'NaN'。我知道要转换包含 NaN 数字的数组,您可以使用 numpy.nan_to_num 转换它们。但是,如果我想转换单个值不在数组中,而是线性回归的结果calculation

编辑:这不是重复的问题 (convert nan value to zero),因为我指的是 不在数组中

的项目/结果

【问题讨论】:

  • 将数组的相同推理应用于标量值有什么问题?

标签: python arrays numpy nan


【解决方案1】:

您可以使用math.isnan 检查您选择的变量是否为 NaN。如果是,请将其更改为您选择的数字。像这样:

>>> import math
>>> x = float("nan")
>>> x
nan
>>> if math.isnan(x):
...     x = 123 # just an example
...
>>> x
123

【讨论】:

  • 如果 OP 想要完全匹配 numpy.nan_to_num 的行为,这不太正确 - math.isnan(float('inf')) == False,但 numpy.nan_to_num 会将 float('inf') 转换为一个大数字,而不是将其保留为是。但是,如果 OP 只关心实际的 NaN,那么它可以正常工作。
  • 实际上是转换值。但是 senshin 注意到它(并回答)的道具,也感谢@Carsten!谢谢!
【解决方案2】:

numpy.nan_to_num 在标量上运行良好。

>>> import numpy as np
>>> np.nan_to_num(float('inf'))
1.7976931348623157e+308
>>> np.nan_to_num(float('nan'))
0.0
>>> np.nan_to_num(float('-inf'))
-1.7976931348623157e+308

【讨论】:

  • 我了解转换 inf-inf,但您什么时候想将 nan 转换为 0
  • @AlexBliskovsky 在许多情况下,当你有一个只对数字有意义的处理管道时,你根本不关心偶尔的 NaN。
猜你喜欢
  • 1970-01-01
  • 2019-02-18
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
  • 2013-01-07
  • 2013-12-12
  • 2018-07-01
  • 2011-04-01
相关资源
最近更新 更多