我有一个二进制数据的二维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