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