【发布时间】:2021-06-02 08:05:04
【问题描述】:
我有一个 numpy 数组,想用一些字符串替换它的值。我检查了this solution,但无法解决我的问题。我的字符串在一个列表中:
names=['base', 'middle', 'top']
我的列表有三个字符串,这意味着我的数组中还有三个数字:
import numpy as np
numbers=np.array([[3., 1., 2., 2.], [1., 2., 3., 1.]])
为了用数字映射名字,我有这样的逻辑:从第一个名字到最后一个名字,数字会减少。我的意思是名字匹配最高的数字('base' : 3.),第二大的名字('middle' : 2.)和姓等于最低的数字('top' : 1.)。最后我想让我的数组为:
subs_arr= np.array([['base', 'top', 'middle', 'middle'], ['top', 'middle', 'base', 'top']])
有什么方法可以在 python 中自动完成(不需要将名称与数字映射)?我非常感谢您提前提供的任何帮助。
【问题讨论】:
-
subs_arr = np.array(names)[(numbers-1).astype(np.int)]其中numbers应以 0 开头,因为 python 索引以 0 开头。但是此解决方案与您的链接中建议的解决方案相同,因此我投票结束此问题. -
亲爱的@obchardon,感谢您的帮助。老实说,在阅读了该解决方案后,我仍然无法弄清楚我的问题。