使用numpy将数组中的整数替换为不同的字符串

2024-04-20 00:59:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个由75个整数值组成的数组,我试图用字符串替换数组中的值,如果它们在某个值范围内。在

数组中的所有值都在0到75之间。我想用一个特定的字符串替换0-24之间的所有值,用不同的字符串替换25-49之间的所有值,用第三个字符串替换所有值50+。在

我想和纽比一起做这个

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.哪里命令,其中它像我想要的那样用virginica字符串替换所有大于49的值,但是它似乎忽略了前面两个命令,我想用它们各自的字符串替换另外两个范围(setosa和versicolor)。在

有办法吗?或者创建一个新数组,其中的字符串与我想要的值范围相对应,本质上是用字符串替换值,但创建一个新数组?在


Tags: 字符串命令irisnp整数数组wherearray
2条回答

每次重写arr_predicted2,这就是它只执行最后一个的原因:

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_predicted3 = np.where((arr_predicted2 > 24) & (arr_predicted2 < 50), 
    versicolor, arr_predicted2)
arr_predicted4 = np.where(arr_predicted3 > 49, virginica, arr_predicted3)

尝试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)

相关问题 更多 >