python 学习笔记(1)--numpy数组转置
2016-10-09 19:58
489 查看
关于数组的转置,Numpy提供了transpose函数和.T属性两种实现形式,一般transpose使用起来更为方便,另外转换其中的两个轴还可以用swapreaxes,下面通过例子来做介绍。
对于是否指定转化规则,具体来看三维的变化:原始数据的“三维”是(2,3,4),不指定转换规则后的“三维”是(4,3,2),而指定规则后的三维则是按照我们指定的规则,将其一维和二维进行调换。
ndarray的T属性,用法则比较简单,只需要在数组后跟.T即可。.T属性实际是转置里面的特殊情况,即不指定转置规则的默认规则。
当某些情况下,你可能只需要转换其中的两个轴,除了可以使用transpose指定轴以外(当然需要每个轴都指定顺便,只是调整其中的部分而已),还可以使用swapreaxes。
#一维数组转置 >>> arr = np.arange(6) >>> print arr [0, 1, 2, 3, 4, 5] >>> print np.transpose(arr) [0, 1, 2, 3, 4, 5]#一维还是一维… #二维数组转置 >>> arr = np.arange(6).reshape((2,3)) >>> print arr [[0, 1, 2], [3, 4, 5]] >>> print np.transpose(arr) [[0,3], [1,4], [3,5]] #三维数组的转置 >>> arr = np.arange(24).reshape((2,3,4)) >>> print arr [[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]], [[ 12, 13, 14, 15], [ 16, 17, 18, 19], [ 20, 21, 22, 23]]] >>> print np.transpose(arr) [[[0, 12], [4, 16], [8, 20]], [[1, 13], [5, 17], [9, 21]], [[2, 14], [6, 18], [10, 22]], [[3, 15], [7, 19], [11, 23]]] #当数组>=三维之后,我们可能希望按照特定规则来转置,transpose 可以接受用于指定转置的坐标轴号码的元组 >>> print np.transpose(arr, (1,0,2)) [[[ 0, 1, 2, 3], [ 12, 13, 14, 15]], [[ 4, 5, 6, 7], [ 16, 17, 18, 19]], [[ 8, 9, 10, 11], [ 20, 21, 22, 23]]]
对于是否指定转化规则,具体来看三维的变化:原始数据的“三维”是(2,3,4),不指定转换规则后的“三维”是(4,3,2),而指定规则后的三维则是按照我们指定的规则,将其一维和二维进行调换。
#原始三维数据规则 >>> print (arr.shape) (2, 3, 4) #不指定转换规则 >>> print (np.transpose(arr).shape) (4, 3, 2) #指定转换规则 >>> print (np.transpose(arr,(1, 0, 2)).shape) (3, 2, 4)
ndarray的T属性,用法则比较简单,只需要在数组后跟.T即可。.T属性实际是转置里面的特殊情况,即不指定转置规则的默认规则。
#一维数组转置 >>> arr = np.arange(6) >>> print arr [0, 1, 2, 3, 4, 5] >>> print arr.T [0, 1, 2, 3, 4, 5]#一维还是一维… #二维数组转置 >>> arr = np.arange(6).reshape((2,3)) >>> print arr [[0, 1, 2], [3, 4, 5]] >>> print arr.T [[0,3], [1,4], [3,5]] #三维数组的转置 >>> arr = np.arange(24).reshape((2,3,4)) >>> print arr [[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]], [[ 12, 13, 14, 15], [ 16, 17, 18, 19], [ 20, 21, 22, 23]]] >>> print arr.T [[[0, 12], [4, 16], [8, 20]], [[1, 13], [5, 17], [9, 21]], [[2, 14], [6, 18], [10, 22]], [[3, 15], [7, 19], [11, 23]]]
当某些情况下,你可能只需要转换其中的两个轴,除了可以使用transpose指定轴以外(当然需要每个轴都指定顺便,只是调整其中的部分而已),还可以使用swapreaxes。
>>> arr = np.arange(24).reshape((2,3,4)) >>> print arr [[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]], [[ 12, 13, 14, 15], [ 16, 17, 18, 19], [ 20, 21, 22, 23]]] >>> print arr.swapaxes(1, 0) [[[ 0, 1, 2, 3], [ 12, 13, 14, 15]], [[ 4, 5, 6, 7], [ 16, 17, 18, 19]], [[ 8, 9, 10, 11], [ 20, 21, 22, 23]]]
相关文章推荐
- 【python学习笔记】16:numpy数组四则运算
- 【python学习笔记】17:numpy数组排序
- 学习Python数据分析随手笔记【一】numpy数组的函数简单应用
- 学习Python数据分析随手笔记【二】numpy数组的属性
- 【python学习笔记】19:numpy数组布尔运算和切片
- 【python学习笔记】15:numpy创建各种数组
- Python.Numpy学习零碎笔记之数组与矩阵
- python numpy操作数组学习笔记(二)数组的分割和组合
- 【python学习笔记】18:numpy数组函数与矩阵运算
- python学习笔记(1)之如何在python3.x下安装PIL、numpy以及matplotlib
- python numpy 库学习笔记
- Python学习笔记5-字符串、bool、数值操作和数组字典排序
- 《利用python进行数据分析》NumPy基础:数组和矢量计算 学习笔记
- 【零基础入门学习Python笔记010】一个打了激素的数组1
- python学习笔记之numpy入门
- python3.4学习笔记(十一) 列表、数组实例
- 【零基础入门学习Python笔记011】一个打了激素的数组2
- Python学习笔记5-字符串、bool、数值操作和数组字典排序
- Numpy学习笔记3-数组的运算
- python学习笔记14 list列表数组