python將nan, inf轉為特定的數字

2021-07-24 10:15:35 字數 809 閱讀 1870

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

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)

2. 執行結果

[[ 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

參考資料:

python將nan, inf轉為特定的數字

在有些機器學習和神經網路模型訓練過程中,可能會遇到原始資料集經過預處理後,資料中包含nan inf等佔位符,導致模型訓練損失函式計算出現偏差,最終導致模型準確率低的問題。所以需要在預處理階段,將該部分資料進行處理操作,常見操作為資料標準化處理後用0代替,另一種方法是利用插值方法進行資料填充。本部分只...

python將nc檔案轉為tiff

import numpy as np import netcdf4 as nc from osgeo import gdal,osr var sa data r c users 13290 desktop soil data nc format var f nc.dataset data var l...

python將字串轉為矩陣

將字串轉換為矩陣,分為四步 將字串切分為乙個list d 2 3 4 5 6 8 1 2 dlist d.strip split 將list中的 轉換為 dint map int,dlist 將list轉換為array darr np.array dint 將array陣列轉換為矩陣,這裡轉為乙個三...