我需要转换下面的3D数组。我需要第1列变成第1行,第2列变成第2行,第3列变成第3行
3 4 5 4 7 3
7 1 2 => 5 1 4
4 5 6 6 2 5
6 7b 1 7b 3 6
3 4 5 => 1 4 7b
7b 1 2 2 5 1
这个工作print(np.rot90(r[6], 3))
但只有在2d数组中,我需要它在3d数组中我需要它对这个数组
[[['6' '7b' '1']
['3' '4' '5']
['7b' '1' '2']]
[['3' '4' '5']
['7' '1' '2']
['4' '5' '6']]
[['7' '1' '2']
['4s' '5' '6']
['1' '2' '3']]]
似乎np.rot90
在内部使用np.transpose
,所以我们可以直接用np.transpose
来代替你的情况。IIUC,您可以将数组转置为第二个&第三维度,然后根据需要反转它们:
a.transpose([0, 2, 1])[:, :, ::-1]
# [[['7b' '3' '6']
# ['1' '4' '7b']
# ['2' '5' '1']]
#
# [['4' '7' '3']
# ['5' '1' '4']
# ['6' '2' '5']]
#
# [['1' '4s' '7']
# ['2' '5' '1']
# ['3' '6' '2']]]
它将得到与np.rot90
相同的结果,@Szczesny在评论中很好地解释了。