Python:矩阵转置numpy.transpose(),numpy.swapaxes(),numpy.rollaxis()

发布时间:2024年01月18日


在Python中,进行三维矩阵转置的方法主要依赖于NumPy库。以下是几种常见的方法,以及相应的例子:

1. numpy.transpose()

numpy.transpose()函数用于交换数组的轴。

numpy.transpose(a, axes=None).

  • a: 输入的数组。
  • axes: 轴的排列顺序。如果未指定,轴将被反转。

返回值是输入数组的轴顺序被反转的新数组。

以下是一个使用numpy.transpose()的例子:

import numpy as np

# 创建一个二维数组
original_array = np.array([[1, 2, 3],
                           [4, 5, 6]])

# 使用transpose进行数组转置
transposed_array = np.transpose(original_array)

# 输出原始数组和转置后的数组
print("原始数组:")
print(original_array)

print("\n转置后的数组:")
print(transposed_array)

在这个例子中,原始数组是一个2x3的数组,通过numpy.transpose()进行转置后,得到了一个3x2的数组。输出结果如下:

原始数组:
[[1 2 3]
 [4 5 6]]

转置后的数组:
[[1 4]
 [2 5]
 [3 6]]

可以看到,数组的行和列发生了交换。

当我们使用numpy.transpose()来处理三维矩阵时,我们需要注意轴的顺序。以下是一个包含输出的例子:

import numpy as np

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

# 使用transpose进行数组转置,指定轴的顺序
transposed_array = np.transpose(original_array, axes=(2, 0, 1))

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

print("\n指定轴顺序后的转置数组:")
print(transposed_array)

在这个例子中,原始数组是一个3x2x3的三维数组。我们使用numpy.transpose()指定了轴的顺序为(2, 0, 1),即将原始数组的第三个轴移动到第一个位置,第一个轴移到第二个位置,第二个轴移到第三个位置。输出结果如下:

原始三维数组:
[[[ 1  2  3]
  [ 4  5  6]]

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

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

指定轴顺序后的转置数组:
[[[ 1  7 13]
  [ 4 10 16]]

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

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

可以看到,三维数组的轴经过指定的顺序进行了转置。

2. numpy.swapaxes()

numpy.swapaxes()函数用于交换数组的两个轴。下面分别给出二维矩阵和三维矩阵的例子:

二维矩阵的例子:

import numpy as np

# 创建一个二维数组
matrix_2d = np.array([[1, 2, 3],
                      [4, 5, 6]])

# 使用swapaxes进行轴交换
result_2d = np.swapaxes(matrix_2d, 0, 1)

# 输出原始二维数组和轴交换后的数组
print("原始二维数组:")
print(matrix_2d)

print("\n轴交换后的数组:")
print(result_2d)

输出结果如下:

原始二维数组:
[[1 2 3]
 [4 5 6]]

轴交换后的数组:
[[1 4]
 [2 5]
 [3 6]]

三维矩阵的例子:

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

# 使用swapaxes进行轴交换
result_3d = np.swapaxes(matrix_3d, 0, 2)

# 输出原始三维数组和轴交换后的数组
print("原始三维数组:")
print(matrix_3d)

print("\n轴交换后的数组:")
print(result_3d)

输出结果如下:

原始三维数组:
[[[ 1  2  3]
  [ 4  5  6]]

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

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

轴交换后的数组:
[[[ 1  7 13]
  [ 4 10 16]]

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

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

可以看到,numpy.swapaxes()在这两个例子中分别对二维和三维数组进行了轴的交换。

3. numpy.rollaxis()

numpy.rollaxis() 函数用于向后滚动特定的轴,使其成为指定维度的第一个轴。
numpy.rollaxis(array, axis, start=0).

  • array: 输入的数组。
  • axis: 要向后滚动的轴。
  • start: 将滚动轴放置在哪个位置。默认为0。

二维矩阵的例子:

import numpy as np

# 创建一个二维数组
matrix_2d = np.array([[1, 2, 3],
                      [4, 5, 6]])

# 使用 rollaxis 将第二个轴滚动到第一个位置
result_2d = np.rollaxis(matrix_2d, 1)

# 输出原始二维数组和滚动后的数组
print("原始二维数组:")
print(matrix_2d)

print("\n滚动后的数组:")
print(result_2d)

输出结果如下:

原始二维数组:
[[1 2 3]
 [4 5 6]]

滚动后的数组:
[[1 4]
 [2 5]
 [3 6]]

三维矩阵的例子:

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

# 使用 rollaxis 将第三个轴滚动到第一个位置
result_3d = np.rollaxis(matrix_3d, 2)

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

print("\n滚动后的数组:")
print(result_3d)

输出结果如下:

原始三维数组:
[[[ 1  2  3]
  [ 4  5  6]]

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

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

滚动后的数组:
[[[ 1  7 13]
  [ 4 10 16]]

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

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

可以看到,通过 numpy.rollaxis() 函数,可以方便地实现对二维和三维矩阵轴的滚动。

文章来源:https://blog.csdn.net/weixin_42046845/article/details/135678008
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。