gpt4 book ai didi

python - 仅保留 numpy 字符串数组中的数字信息

转载 作者:行者123 更新时间:2023-12-05 03:30:34 24 4
gpt4 key购买 nike

我只想保留 numpy 字符串数组中的数字,这些数字不一定有效。我的代码如下所示:

age = train['age'].to_numpy() # 200k values
set(age)
# {'1', '2', '3', '7-11', np.nan...}

age = np.array(['1', '2', '3', '7-11', np.nan])

期望的输出:np.array([1, 2, 3])。理想情况下,'7-11' 应该是 7,但这并不简单并且是可以容忍的损失。

np.isfinite(x) 给出“输入类型不支持 ufunc 'isfinite',并且根据转换规则无法将输入安全地强制转换为任何受支持的类型” '安全''

x = [num for num in age if isinstance(num, (int, float))] 返回 []

最佳答案

这里有一个选项,它会首先在 '-' 处拆分字符串,并且只取第一个值,因此 '7-11' 被转换为 7:

age = np.array(['1', '2', '3', '7-11', np.nan])
age_int = np.array([int(x[0]) for x in np.char.split(age, sep='-') if x[0].isdecimal()])

输出:array([1, 2, 3, 7])

如果您不关心像“7-11”这样的情况,有一种更有效的方法可以做到这一点:

age_int2 = age[np.char.isdecimal(age)].astype(int)

输出 2:array([1, 2, 3])

关于python - 仅保留 numpy 字符串数组中的数字信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70795550/

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