Python numpy.moveaxis函数方法的使用

numpy.moveaxis 是一个在处理多维数组时非常有用的函数,它可以将指定的轴从数组中的一个位置移动到另一个位置,从而改变数组的轴顺序。本文主要介绍一下NumPy中moveaxis方法的使用。

numpy.moveaxis

numpy.moveaxis(a, source, destination)      [source]

将数组的轴移到新位置。

其他轴保持其原始顺序。

1.11.0版中的新功能。

参数 :

anp.ndarray

轴应重新排序的数组。

source :int 或 int的sequence 

要移动的轴的原始位置。 这些必须是唯一的。

destination :int 或 int的sequence

每个原始轴的目标位置。 这些也必须是唯一的。

返回值 :

result :np.ndarray

具有移动轴的Array。 该数组是输入数组的视图。

例子

1)简单的轴移动

import numpy as np

# 创建一个三维数组
arr = np.ones((2, 3, 4))

# 打印原始数组的形状
print("Original shape:", arr.shape)

# 将轴0移动到轴2的位置
new_arr = np.moveaxis(arr, 0, 2)

# 打印移动后的数组形状
print("New shape:", new_arr.shape)

2)移动多个轴

import numpy as np

# 创建一个四维数组
arr = np.random.randn(2, 3, 4, 5)

# 打印原始数组的形状
print("Original shape:", arr.shape)

# 移动轴0到轴2,轴1到轴0
new_arr = np.moveaxis(arr, (0, 1), (2, 0))

# 打印移动后的数组形状
print("New shape:", new_arr.shape)

3)处理图像数据

import numpy as np

# 创建一个形状为 (height, width, channels) 的图像数据
image = np.random.randn(64, 64, 3)

# 打印原始形状
print("Original shape:", image.shape)

# 将 (height, width, channels) 转换为 (channels, height, width)
new_image = np.moveaxis(image, -1, 0)

# 打印转换后的形状
print("New shape:", new_image.shape)

4)使用示例

import numpy as np

# 创建一个形状为 (3, 4, 5) 的三维数组
x = np.zeros((3, 4, 5))

# 使用 moveaxis 将第一个轴 (0) 移动到最后 (-1)
print("Move axis 0 to -1:", np.moveaxis(x, 0, -1).shape)  # 输出: (4, 5, 3)

# 使用 moveaxis 将最后一个轴 (-1) 移动到第一个 (0)
print("Move axis -1 to 0:", np.moveaxis(x, -1, 0).shape)  # 输出: (5, 3, 4)

# 使用 transpose 进行轴的重新排列
print("Transpose axes:", np.transpose(x).shape)  # 输出: (5, 4, 3)

# 使用 swapaxes 交换第一个轴 (0) 和最后一个轴 (-1)
print("Swap axes 0 and -1:", np.swapaxes(x, 0, -1).shape)  # 输出: (5, 4, 3)

# 使用 moveaxis 将轴 0 移动到 -1,轴 1 移动到 -2
print("Move axes [0, 1] to [-1, -2]:", np.moveaxis(x, [0, 1], [-1, -2]).shape)  # 输出: (5, 4, 3)

# 使用 moveaxis 将轴 0, 1, 2 按顺序移动到 -1, -2, -3
print("Move axes [0, 1, 2] to [-1, -2, -3]:", np.moveaxis(x, [0, 1, 2], [-1, -2, -3]).shape)  # 输出: (5, 4, 3)

文档:numpy.moveaxis.html

推荐阅读
cjavapy编程之路首页