繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM