我正在尝试使用布尔掩码来处理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设置为均值。
使用numpy.nanmean
执行以下操作:它将忽略NaN
s
self.X[isnan, AGE_COLUMN] = np.nanmean(self.X[:, AGE_COLUMN].astype(float))
numpy.nanmean(a,axis = None,dtype = None,out = None,keepdims =)
计算沿指定轴的算术平均值,忽略NaN。
返回数组元素的平均值。默认情况下,平均值取自平坦数组,否则超过指定轴。 float64中间值和返回值用于整数输入。
对于所有NaN切片,返回NaN并引发RuntimeWarning。