numpy.moveaxis
numpy.moveaxis(a, source, destination) [source]
将数组的轴移到新位置。
其他轴保持其原始顺序。
1.11.0版中的新功能。
参数 : | a : 轴应重新排序的数组。 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)