gpt4 book ai didi

python - 替换numpy数组中的空白

转载 作者:太空狗 更新时间:2023-10-30 01:15:37 25 4
gpt4 key购买 nike

我的 numpy 数组中的第三列是年龄。在此列中,大约 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

最佳答案

这个怎么样:

my_data =  np.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')

ismale = my_data[:,1] == '0'
missing_age = my_data[:, 2] == ''
maleAgeBlank = missing_age & ismale
my_data[maleAgeBlank, 2] = '30'

结果:

>>> my_data
array([[u'3', u'1', u'22', u'0', u'7.25', u'2'],
[u'1', u'0', u'38', u'0', u'71.2833', u'0'],
[u'3', u'0', u'26', u'0', u'7.925', u'2'],
[u'3', u'0', u'30', u'2', u'23.45', u'2'],
[u'1', u'1', u'26', u'0', u'30', u'0'],
[u'3', u'1', u'32', u'0', u'7.75', u'1']],
dtype='<U82')

关于python - 替换numpy数组中的空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19884870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com