[英]python numpy how to rotate 3d array along the center
我需要转换以下 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,您可以将数组转置为第 2 维和第 3 维,然后根据需要反转它们:
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 在评论中很好地解释了这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.