首页 > 解决方案 > 如何用python中的列表字符串替换numpy数组的数字

问题描述

我有一个 numpy 数组,想用一些字符串替换它的值。我检查了这个解决方案,但无法解决我的问题。我的字符串在一个列表中:

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 中自动完成(不需要用数字映射名称)?我非常感谢您提前提供的任何帮助。

标签: pythonarrayslistnumpy

解决方案


像这样的东西怎么样:

import numpy as np
numbers = np.array([[3., 1., 2., 2.], [1., 2., 3., 1.]]).astype(int)-1
names = np.array(['top', 'middle', 'base'])

subs_arr = names[numbers]

输出:

subs_arr = 
[['base' 'top' 'middle' 'middle']
 ['top' 'middle' 'base' 'top']]

推荐阅读