將nan, inf轉為特定的數字

domodo2012發表於2020-12-05

最近,處理兩個矩陣的點除,得到結果後,再作其他的計算,發現有些內建的函式不work;檢視得到的資料,發現有很多nan和inf,導致python的基本函式執行不了,這是因為在除的過程中分母出現0的緣故。為了將結果能夠被python其他函式處理,尤其numpy庫,需要將nan,inf轉為python所能識別的型別。這裡將nan,inf替換0作為例子。

In[1]:
import numpy as np
a = np.array([[np.nan, np.nan, 1, 2], [np.inf, np.inf, 3, 4], [1, 1, 1, 1], [2, 2, 2, 2]])
print a
where_are_nan = np.isnan(a)
where_are_inf = np.isinf(a)
a[where_are_nan] = 0
a[where_are_inf] = 0
print a
print np.mean(a)

Out[1]:
[[ nan  nan   1.   2.]
 [ inf  inf   3.   4.]
 [  1.   1.   1.   1.]
 [  2.   2.   2.   2.]]
[[ 0.  0.  1.  2.]
 [ 0.  0.  3.  4.]
 [ 1.  1.  1.  1.]
 [ 2.  2.  2.  2.]]
1.375

轉載自:
https://blog.csdn.net/helei001/article/details/53066317

相關文章