Python:numpy.rot90() 三维矩阵绕着某一轴旋转

文章目录

    • [1. numpy.rot90() 语法](#1. numpy.rot90() 语法)
    • [2. numpy.rot90() 举例说明](#2. numpy.rot90() 举例说明)
    • 3.axes说明

在NumPy中,可以使用 numpy.rot90() 函数对三维矩阵绕着某个轴旋转。

1. numpy.rot90() 语法

numpy.rot90(m, k=1, axes=(0, 1)).

  • m: 输入的数组。
  • k: 旋转的次数,默认为1。
  • axes: 旋转的轴,默认为(0, 1)。旋转方向:是从第一轴到第二轴

2. numpy.rot90() 举例说明

下面是一个具体的例子,演示如何在三维矩阵上绕着某个轴旋转:

python 复制代码
import numpy as np

# 创建一个三维数组
matrix_3d = np.array([[[1, 2, 3], [4, 5, 6]],
                      [[7, 8, 9], [10, 11, 12]],
                      [[13, 14, 15], [16, 17, 18]]])

# 使用 rot90 函数绕着第三个轴逆时针旋转90度
result_3d = np.rot90(matrix_3d, k=1, axes=(2, 0))

# 输出原始三维数组和旋转后的数组
print("原始三维数组:")
print(matrix_3d)

print("\n绕着第三个轴逆时针旋转90度后的数组:")
print(result_3d)

这里的 axes=(2, 0) 表示绕着第三个轴逆时针旋转(z轴到x轴:)90度。

输出结果如下:

python 复制代码
原始三维数组:
[[[ 1  2  3]
  [ 4  5  6]]

 [[ 7  8  9]
  [10 11 12]]

 [[13 14 15]
  [16 17 18]]]

绕着第三个轴逆时针旋转90度后的数组:
[[[ 1  7 13]
  [ 4 10 16]]

 [[ 2  8 14]
  [ 5 11 17]]

 [[ 3  9 15]
  [ 6 12 18]]]

通过指定 k 参数,还可以实现不同次数的旋转。

3.axes说明

axes 参数用于指定绕着哪两个轴进行旋转。在三维矩阵中,通常有三个轴:0、1、2。这些轴分别对应数组的三个维度x,y,z。

考虑一个三维矩阵 arr,其形状为 (n, m, p),其中 n、m、p 分别是矩阵在三个维度上的大小。axes 参数是一个包含两个元素的元组,用于指定旋转操作涉及的两个轴。

例如,axes=(1, 2) 表示绕着第一个轴旋转,方向为第二个轴到第三个轴

下面是一个例子,演示了不同 axes 参数值对旋转结果的影响:

python 复制代码
import numpy as np

arr = np.array([[[1, 2], [3, 4]],
                [[5, 6], [7, 8]]])

# 默认情况下,绕着前两个轴 (0, 1) 逆时针旋转90度
result_default = np.rot90(arr)
print("默认情况下绕着前两个轴逆时针旋转90度:")
print(result_default)

# 指定 axes=(0, 2),绕着第一个轴和第三个轴逆时针旋转90度
result_axes_0_2 = np.rot90(arr, axes=(0, 2))
print("\n指定 axes=(0, 2),绕着第一个轴和第三个轴逆时针旋转90度:")
print(result_axes_0_2)

输出结果:

python 复制代码
默认情况下绕着前两个轴逆时针旋转90度:
[[[2 4]
  [1 3]]

 [[6 8]
  [5 7]]]

指定 axes=(0, 2),绕着第一个轴和第三个轴逆时针旋转90度:
[[[3 1]
  [4 2]]

 [[7 5]
  [8 6]]]

通过调整 axes 参数,你可以控制旋转的轴,从而影响旋转结果。

相关推荐
Rabbit_QL3 分钟前
PyTorch DataLoader `num_workers` 配置指南:从新手到进阶
人工智能·pytorch·python
naruto_lnq5 分钟前
如何为开源Python项目做贡献?
jvm·数据库·python
晚风吹长发6 分钟前
初步了解Linux中的线程同步问题及线程安全和死锁与生产消费者模型
linux·运维·服务器·开发语言·数据结构·安全
学嵌入式的小杨同学9 分钟前
【Linux 封神之路】进程进阶实战:fork/vfork/exec 函数族 + 作业实现(含僵尸进程解决方案)
linux·开发语言·vscode·嵌入式硬件·vim·软件工程·ux
fengfuyao98518 分钟前
基于MATLAB/Simulink的车辆自适应巡航控制(ACC)实现
开发语言·matlab
勿忘初心9119 分钟前
pinocchio库使用教程(三)
python·机器人·动力学·运动学·pinocchio
海盗123421 分钟前
WPF上位机组件开发-设备状态运行图基础版
开发语言·c#·wpf
看我干嘛!22 分钟前
python第四次作业
开发语言·python
疯狂的喵23 分钟前
使用Flask快速搭建轻量级Web应用
jvm·数据库·python
Coder_preston23 分钟前
Java集合框架详解
java·开发语言