我确定你们中的许多人都使用numpy日志功能。您如何处理Nan和-Inf?有什么pythonic方法可以将其从数组中删除吗?
a = np.array([[0,1],
[0,0],
[1,1]])
b = np.log(a[:,0]/a[:,1])
print(b)
答案 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)。