如何批量将NumPy数组中的数字替换为对应名称?
首先得提个醒:你用的{'Nikolas', 'Kate', 'George'}是集合,集合是无序的,没法保证和[0,1,2]的对应关系固定,运行多次可能得到不同结果,所以先把名称改成有序结构,比如列表或者直接建字典映射。
方法一:用字典构建映射(最稳妥)
先把数字和名称的对应关系做成字典,然后用NumPy的向量化操作批量替换:
import numpy as np # 构建稳定的数字->名称映射字典 num_to_name = {0: 'Nikolas', 1: 'Kate', 2: 'George'} # 原始数组 np_array_1 = np.array([1, 2]) np_array_2 = np.array([0]) # 用np.vectorize实现批量替换 replace_func = np.vectorize(lambda x: num_to_name[x]) np_array_1 = replace_func(np_array_1) np_array_2 = replace_func(np_array_2) print(np_array_1) # 输出 ['Kate' 'George'] print(np_array_2) # 输出 ['Nikolas']
方法二:用有序列表做索引(适合数字连续从0开始的场景)
如果你的数字刚好是从0开始的连续整数,也可以把名称做成有序列表,直接用数组索引完成替换:
import numpy as np # 用有序列表替代集合,保证对应关系稳定 name_list = ['Nikolas', 'Kate', 'George'] np_array_1 = np.array([1, 2]) np_array_2 = np.array([0]) # 直接用数组作为索引,一步完成替换 np_array_1 = name_list[np_array_1] np_array_2 = name_list[np_array_2] print(np_array_1) # 输出 ['Kate' 'George'] print(np_array_2) # 输出 ['Nikolas']
批量处理多个数组
如果需要处理的数组数量多,可以把数组放到列表里循环处理:
import numpy as np name_list = ['Nikolas', 'Kate', 'George'] # 把所有要处理的数组放到一个列表里 arrays_to_process = [np.array([1, 2]), np.array([0]), np.array([0,1,2])] # 批量替换 processed_arrays = [name_list[arr] for arr in arrays_to_process] # 输出结果 for arr in processed_arrays: print(arr)
内容的提问来源于stack exchange,提问作者Robin_hood_963
相关产品推荐
相关产品推荐

