0

我正在尝试使用布尔掩码来处理 numpy 数组中的行:

isnan = np.isnan(self.X[:, AGE_COLUMN].astype(float))
self.X[isnan, AGE_COLUMN] = np.mean(self.X[:, AGE_COLUMN].astype(float))

isnan 和 X 是dtype.

首先,我检查年龄列中的哪些行是 nan。然后我想将这些值设置为所有年龄段的平均值。调试器有以下结果self.X[isnan, AGE_COLUMN]

[nan nan nan nan nan nan nan nan nan nan ....]

self.X[[True, False, True], AGE_COLUMN]例如,如果我尝试它会返回索引行。但是对于isnan数组它不起作用。

我该如何解决这个问题以将 nans 设置为平均值。

4

1 回答 1

1

使用 执行以下操作numpy.nanmean:它将忽略 NaNs

self.X[isnan, AGE_COLUMN] = np.nanmean(self.X[:, AGE_COLUMN].astype(float))

从文档

numpy.nanmean(a,轴=无,dtype=无,out=无,keepdims=)

计算沿指定轴的算术平均值,忽略 NaN。

返回数组元素的平均值。默认情况下,平均值会在展平的数组上,否则在指定的轴上。float64 中间值和返回值用于整数输入。

对于所有 NaN 切片,返回 NaN 并引发 RuntimeWarning。

于 2017-04-30T10:25:12.933 回答