我试图将一个字符串转换成n维numpy数组(x,4,4)。基本要求是4x4数组,列主要填充值。我们将根据输入字符串的长度使用任意多个4x4数组。例如,如果我的字符串是:
“一只敏捷的棕色狐狸跳过狗”
结果数组应该如下所示:
[[['A' 'i' 'b' 'n']
[' ' 'c' 'r' ' ']
['q' 'k' 'o' 'f']
['u' ' ' 'w' 'o']]
[['x' 'm' 'o' ' ']
[' ' 'p' 'v' 'd']
['j' 's' 'e' 'o']
['u' ' ' 'r' 'g']]]
请注意,与传统的行先填充值不同,要求在4x4子数组中先填充列。
我知道实现这一点的常规代码如下所示,其中包含三重嵌套循环:
^{pr2}$我想利用Python的函数功能,经过一番研究,我找到了以下方法:
string = 'A quick brown fox jumps over dog'
dim1 = len(string) // 16
matrix2 = np.array(list(string))
matrix2 = np.reshape(matrix2, (dim1, 4, 4))
但当我进行整形时,它会给出以下输出:
[[['A' ' ' 'q' 'u']
['i' 'c' 'k' ' ']
['b' 'r' 'o' 'w']
['n' ' ' 'f' 'o']]
[['x' ' ' 'j' 'u']
['m' 'p' ' ' 'o']
['v' 'e' 'r' ' ']
['d' 'o' 'g' 's']]]
它正在逐行完成字符串。我希望它在sub(4x4)数组中逐列显示,然后转到下一个(4x4)数组。在
进一步的研究表明,我可以使用swapaxes函数来实现这一点,如下所示:
matrix2 = np.swapaxes(matrix2, 1, 2)
上面的结果给了我想要的结果。在
所以,我最后的代码是:
string = 'A quick brown fox jumps over dog'
dim1 = len(string) // 16
matrix2 = np.array(list(string))
matrix2 = np.reshape(matrix2, (dim1, 4, 4))
matrix2 = np.swapaxes(matrix2, 1, 2)
print(matrix2)
只是想知道你的专家意见,如果有一种方法来实现重塑和交换使用单一的方法/功能。或者,如果有一种完全更好、更方便的方法,而不使用循环或不使用那么多函数。在
不是单一的方法/函数,但您可以在一行代码中执行此操作:
它给出了:
^{pr2}$相关问题 更多 >
编程相关推荐