如何将整数矩阵转换为对应字母的字符串矩阵?
解决方法:将numpy矩阵数字转换为对应大写字母
原代码问题分析
你写的三层循环存在逻辑错误:
rows、cols、vals未定义,无法正确遍历矩阵元素- 每个矩阵位置会被
vals中的所有值反复赋值,最终仅保留最后一个k对应的字母,完全达不到逐个转换的效果
可行方案(针对numpy数组)
假设你的solution是numpy数组,以下是几种高效的转换方法:
方法1:numpy向量化操作(推荐)
利用numpy的vectorize函数将转换逻辑批量应用到整个数组:
import numpy as np def num_to_char(n): return chr(n + 64) # 1→65→'A',12→76→'L' vectorized_convert = np.vectorize(num_to_char) solution_new = vectorized_convert(solution)
方法2:列表推导式(手动循环)
如果偏好显式循环,可以先将numpy数组转为普通列表,再逐个转换:
# 转换为列表列表并逐个处理 solution_list = solution.tolist() solution_new = [[chr(num + 64) for num in row] for row in solution_list] # 若需转回numpy数组: solution_new = np.array(solution_new)
方法3:numpy char模块直接转换
利用numpy的字符处理模块直接完成转换,代码最简洁:
solution_new = np.char.chr(solution + 64)
验证结果
以你提到的solution[0][2] = 12为例,上述方法都会得到solution_new[0][2] = 'L',符合需求。
内容的提问来源于stack exchange,提问作者Eric Yuan
相关产品推荐
相关产品推荐

