我的 numpy 数组中的第三列是 Age。在此列中,大约 75% 的条目是有效的,25% 是空白的。第 2 列是性别,通过一些操作,我计算出数据集中男性的平均年龄为 30 岁。我的数据集中女性的平均年龄为 28 岁。
我想将男性的所有空白年龄值替换为 30 岁,将女性的所有空白年龄值替换为 28 岁。
但是我似乎无法做到这一点。任何人有建议或知道我做错了什么?
这是我的代码:
# my entire data set is stored in a numpy array defined as x
ismale = x[::,1]=='male'
maleAgeBlank = x[ismale][::,2]==''
x[ismale][maleAgeBlank][::,2] = 30
无论出于何种原因,当我完成上述代码时,我键入x
以显示数据集,即使我将它们设置为 30,空白仍然存在。请注意,我不能这样做,x[maleAgeBlank]
因为该列表将包含一些女性数据点,因为女性数据点尚未排除。
有什么办法可以得到我想要的吗?出于某种原因,如果我这样做x[ismale][::,1] = 1
(将“男性”列设置为 1),那会起作用,但x[ismale][maleAgeBlank][::,2] = 30
不起作用。
数组样本:
#output from typing x
array([['3', '1', '22', ..., '0', '7.25', '2'],
['1', '0', '38', ..., '0', '71.2833', '0'],
['3', '0', '26', ..., '0', '7.925', '2'],
...,
['3', '0', '', ..., '2', '23.45', '2'],
['1', '1', '26', ..., '0', '30', '0'],
['3', '1', '32', ..., '0', '7.75', '1']],
dtype='<U82')
#output from typing x[0]
array(['3', '1', '22', '1', '0', '7.25', '2'],
dtype='<U82')
请注意,我已在上述输出中将第 2 列更改为女性 0 和男性 1