我的 numpy 数组中的第三列是年龄。在这一列中,约75%的条目有效,25%为空白。第二列是性别,并使用一些操作计算出数据集中男性的平均年龄为30岁,女性的平均年龄为28岁。
我想将所有男性的空白年龄值替换为30岁,所有女性的空白年龄值替换为28岁。
但是我似乎做不到。有人有建议或知道我做错了什么吗?
以下是我的代码:
出于某种原因,当我完成上述代码后,我键入
有没有办法得到我想要的结果?出于某种原因,如果我执行
数组示例:
请注意,上述输出中我已将第二列更改为0表示女性,1表示男性。
我想将所有男性的空白年龄值替换为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')
请注意,上述输出中我已将第二列更改为0表示女性,1表示男性。