使用log函数时如何在numpy中处理-inf和Nan

时间:2019-02-11 18:15:15

标签: python-3.x numpy

我确定你们中的许多人都使用numpy日志功能。您如何处理Nan和-Inf?有什么pythonic方法可以将其从数组中删除吗?

a = np.array([[0,1],
              [0,0],
              [1,1]])

b = np.log(a[:,0]/a[:,1])

print(b)

1 个答案:

答案 0 :(得分:2)

使用np.isfinite()(文档here)对值有限的数组进行简单索引。

>>> a = np.array([[0,1],
                  [0,0],
                  [1,1]])
>>> b = np.log(a[:,0]/a[:,1])
>>> b[np.isfinite(b)]
array([ 0.])

np.isfinite()函数将为您提供一个布尔数组,该布尔数组的大小与输入数组True的大小相同,无论值是有限的,即非NaN和non-inf,以及{{1} }否则:

False

然后可以用作布尔索引,因此它将仅从>>> np.isfinite(b) array([False, False, True], dtype=bool) 中获取值,而该结果为b(在这种情况下,它是具有值的最终索引的0)。

相关问题