python - 使用numpy用不同的字符串替换数组中的整数
问题描述
我有一个包含 75 个整数值的数组,如果数组中的值在某个值范围内,我会尝试用字符串替换它们。
数组中的所有值都在 0 到 75 之间。我想用特定字符串替换 0-24 之间的所有值,用不同的字符串替换 25-49 之间的所有值,用第三个字符串替换所有 50+ 的值。
我正在尝试用 numpy 做到这一点,
setosa = 'Iris-setosa '
versicolor = 'Iris-versicolor '
virginica = 'Iris-virginica '
arr_predicted1 = np.array(arr_indices).reshape(1, 75)
arr_predicted2 = np.where(arr_predicted1 < 25, setosa, arr_predicted1)
arr_predicted2 = np.where((arr_predicted1 > 24) & (arr_predicted1 < 50),
versicolor, arr_predicted1)
arr_predicted2 = np.where(arr_predicted1 > 49, virginica, arr_predicted1)
我面临的问题是它只执行第三个 np.where 命令,它将所有大于 49 的值替换为我想要的 virginica 字符串,但它似乎忽略了我想要替换另一个的前两个命令两个范围及其各自的字符串(setosa 和 versicolor)。
有没有办法做到这一点?或者也许创建一个新数组,其中字符串对应于我想要的值范围,基本上用字符串替换值但创建一个新数组?
解决方案
尝试numpy.select
:
import numpy as np
conditions = [arr_predicted1 < 25, (arr_predicted1 > 24) & (arr_predicted1 < 50), arr_predicted1 > 49]
choice = [setosa, versicolor, virginica]
arr_predicted2 = np.select(condtions, choice)
推荐阅读
- linux - Linux:在 docker 容器中找不到现有的共享库
- c# - 检查名称是否已经在 ListView 列中
- node.js - 从nodejs中的gRPC函数内的数据库中获取数据
- android - 未找到 Android 部署设置文件,未构建 APK
- powershell - 将标头传递给 Invoke-RestMethod 时出错
- python - 在 django 搜索中没有得到结果,但个人搜索工作正常
- c# - 如何更改 xamarin 中的 PlaceHolder 文本颜色?
- typescript - 如何处理“深层”嵌套联合类型
- many-to-many - 多对多与 graphql-dotnet 中的 dataLoader
- c - 查找单词出现在C中的文本文件中的次数