python - 在numpy数组中用随机替换缺失值

标签 python arrays numpy missing-data

我有一个带有二进制数据的 2D numpy 数组,即 0 和 1(未观察到或观察到)。在某些情况下,该信息丢失 (NaN)。由于缺失值在数据集中是随机的,我认为替换它们的最佳方法是使用随机 0 和 1。

下面是一些示例代码:

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 更简单的解决方案?我正在处理的数据集比这个例子大得多。

最佳答案

尝试

nan_mask = np.isnan(matrix)
matrix[nan_mask] = np.random.randint(0, 2, size=np.count_nonzero(nan_mask))

关于python - 在numpy数组中用随机替换缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29365194/

相关文章:

python - 创建从一台服务器到下一台服务器的目录

c++ - 如何在 C++ 中使用 for 循环递增两个不同的值

python - python数组中None之间的第一个和最后一个数字

c - 使用数组计算和存储从一年到下一年的百分比增长

python - 在 numpy/matplotlib 中以图形和数字方式求解线性二次方程组?

python - 重复,但在 numpy 中以可变大小的 block

python - 如何使用 Python 在 Windows 注册表上验证和创建值?

python - 类型错误 : get() takes no keyword arguments

python - 在 cmd 中打开一个 python 文件,一个 Electron 错误

python - 使用 numpy 数组调用 lambda