首页 > NumPy 阅读数:32

NumPy数组的转置和轴对换

在 NumPy 中,利用 transpose()、ndarray.T、rollaxis() 和 swapaxes() 等函数可实现翻转数组的操作。

transpose() 函数

该函数可实现翻转给定数组的维度,并且返回数组的 1 个视图(View)。使用transpose()函数的方法如下:

numpy.transpose(arr)

其中,参数 arr 表示要转置的数组。例如 ar r是一个 3 行 5 列数组,numpy.transpose(arr) 函数就会返回 arr 数组转置为 5 行 3 列的数组视图,而原数组 arr 不改变。

ndarray.T 函数

该函数是属于 ndarray 类,作用类似于 numpy.transpose

rollaxis() 函数

该函数可实现向后滚动特定的轴,直到 1 个特定位置。使用 rollaxis() 函数的方法如下:

numpy.rollaxis(arr,axis,start)

其中,参数 arr 表示数组;axis 表示要向后滚动的轴,其他轴的相对位置不会改变;start 表示滚动到特定位置,默认为零,表示完整的滚动。

swapaxes() 函数

该函数可交换数组的两个轴。NumPy1.10 之前的版本会返回交换后数组的视图。使用 swapaxes() 函数的方法如下:

numpy.swapaxes(arr,axis1,axis2)

其中,参数 arr 表示数组,axis1 表示对应第 1 个轴的整数,axis2 表示对应第 2 个轴的整数。

翻转数组的示例

示例代码 example1 如下。
# -*- coding: UTF-8 -*-
import numpy as np
#创建数组2行5列
arr = np.arange(10).reshape(2,5)
print('原数组:',arr)
#用transpose函数转置
print('转置数组:')
print(np.transpose(arr))
#用ndarray.T转置
print('转置数组:')
print(arr.T)
#用rollaxis函数
arr = np.arange(8).reshape(2,2,2)
print('原数组:',arr)
# 将轴 2 滚动到轴 0(宽度到深度)
print('调用rollaxis函数:')
print(np.rollaxis(arr,2))
# 将轴 0 滚动到轴 1(宽度到高度)
print('调用rollaxis函数:')
print(np.rollaxis(arr,2,1))
#用swapaxes函数
arr = np.arange(8).reshape(2, 2, 2)
print('原数组:',arr)
# 现在交换轴 0(深度方向)到轴 2(宽度方向)
print('调用swapaxes函数后的数组:')
print(np.swapaxes(arr, 2, 0))