我有一个25乘25的矩阵
solution = array([[ 3, 14, 12, 6, 25, 19, 7, 21, 18, 16, 5, 24, 9, 10, 1, 13,
23, 4, 20, 8, 22, 11, 17, 15, 2],
[ 2, 9, 19, 8, 13, 12, 20, 3, 10, 11, 17, 7, 23, 15, 14, 22,
25, 18, 5, 16, 4, 21, 6, 24, 1],
[21, 18, 15, 7, 5, 4, 6, 22, 17, 1, 13, 20, 3, 11, 2, 24,
10, 14, 12, 9, 16, 8, 25, 19, 23],
...
...
[14, 13, 21, 1, 3, 17, 5, 12, 16, 15, 6, 19, 22, 4, 23, 10,
8, 24, 25, 2, 9, 20, 18, 7, 11]])
我想把所有的元素转换成字符串字母。
我已经尝试了以下代码,但没有工作。
for i in rows:
for j in cols:
for k in vals:
solution[i][j] = chr(k + 64)
还有其他功能吗?谢谢!
4条答案
按热度按时间tp5buhyn1#
怎么样:
示例:
您也可以改为从每一列产生单一连续字串:
或者,如注解中所示,由于数组表示一个25x25 Sudoku,您可以显示子块(大小为5):
计时
这个方法特别有效,因为它是矢量化的,而且
view()
本身不进行复制。0dxa2lsx2#
list(map((lambda sol: [chr(k + 64) for k in sol]), solution))
zpf6vheq3#
请尝试以下操作:
这是一个快速优雅的解决方案,做正是你需要的。
进一步说明:np.矢量化(函数,对象):它对 object 中的每个元素应用 function。在本例中,它应用我们的lambda x:chr(64+x)函数。这相当于写入:
x.astype(int)
简单地将x的所有元素转换为所需的相同类型int。希望这有助于和快乐的编码!
hs1ihplo4#
有一种方法可以避免迭代,只使用
numpy
方法。