python numpy如何沿中心旋转3d数组



我需要转换下面的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在评论中很好地解释了。

最新更新