我有一個二進制數據的二維numpy數組,即0和1(未觀察到或觀察到)。對於某些情況,缺少該信息(NaN)。由於缺失值在數據集中是隨機的,我認爲最好的替換方法是使用隨機的0和1。在numpy數組中隨機替換缺失值
下面是一些示例代碼:
import numpy as np
row, col = 10, 5
matrix = np.random.randint(2, size=(row,col))
matrix = matrix.astype(float)
matrix[1,2] = np.nan
matrix[5,3] = np.nan
matrix[8,0] = np.nan
matrix[np.isnan(matrix)] = np.random.randint(2)
這樣做的問題是,所有NaN是具有相同值的代替,0或1,而我想兩者。有沒有比例如for循環分別調用每個NaN更簡單的解決方案?我正在處理的數據集比這個例子大得多。
我認爲它應該是'np.random.randint(0,** 2 **,大小= NP。 count_nonzero(nan_mask))',不是嗎?否則,我似乎只得到0。順便說一句好主意!我自己應該想到這一點,因爲我已經在使用尺寸規格的'np.random.randit()'... – 2015-03-31 11:43:25
沒錯,你是對的,修好了! – YXD 2015-03-31 12:06:26