精华内容
下载资源
问答
  • NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。...本文主要介绍一下NumPyswapaxes方法的使用。 原文地址:Python numpy.swapaxes函数方法的使用 ...

    NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍一下NumPy中swapaxes方法的使用。
    原文地址:Python numpy.swapaxes函数方法的使用

    展开全文
  • 今天小编就为大家分享一篇np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 在图像处理中,有时候需要维度转换,比如将图像的通道维移到第一维,下面来介绍一下在numpy中如何对矩阵维度进行转换 1.使用numpy.transpose(a, axes=None) >>>a=np.arange(0,12).reshape(3,2,2) >>&...

    在图像处理中,有时候需要维度转换,比如对于一些神经网络的输入,我们需要将图像的通道维移到第一维或者最后一维,下面来介绍一下在numpy中如何对矩阵维度进行转换

    1.使用numpy.transpose(a, axes=None)

    >>>a=np.arange(0,12).reshape(3,2,2)
    >>>print(a,a.shape)
    [[[ 0  1]
      [ 2  3]]
    
     [[ 4  5]
      [ 6  7]]
    
     [[ 8  9]
      [10 11]]] (3, 2, 2)
    

    第一种使用方式:当只传入a的时候,是对a进行转置

    >>>b=np.transpose(a)
    >>>print(b,b.shape)
    [[[ 0  4  8]
      [ 2  6 10]]
    
     [[ 1  5  9]
      [ 3  7 11]]] (2, 2, 3)
    

    第二种使用方式:指定交换方式,第二个参数是一个tuple,比如这里的(1,0,2)表示的是将原来的第1维变换到第0维,第0维变换到第1维,第2维变换到第3维;所以里面的数字不能超过维度大小,比如如果矩阵是3维的,那么里面的值只能取0,1,2

    >>>c=np.transpose(a,(1, 0, 2))
    >>>print(c,c.shape)
    [[[ 0  1]
      [ 4  5]
      [ 8  9]]
    
     [[ 2  3]
      [ 6  7]
      [10 11]]] (2, 3, 2)
    

    2.使用numpy.swapaxes(a, axis1, axis2);它和transpose的区别是这个函数只能一次交换两个维度,并且不用使用tuple指定,直接作为第二第三个参数传入即可

    >>>d=np.swapaxes(a,1,2)
    >>>print(d,d.shape)
    
    [[[ 0  2]
      [ 1  3]]
    
     [[ 4  6]
      [ 5  7]]
    
     [[ 8 10]
      [ 9 11]]] (3, 2, 2)
    
    展开全文
  • numpy.rollaxis(arr, axis, start) arr:数组 axis:要滚动的轴,其它轴的相对位置不变 start:默认为零,要滚动到目标位置。 举例说明: >>> a = np.ones((3,4,5,6)) >>> np.rollaxis(a, 3, ...
    numpy.rollaxis(arr, axis, start)
    • arr:数组
    • axis:要滚动的轴,其它轴的相对位置不变
    • start:默认为零,要滚动到目标位置。

    举例说明:

    >>> a = np.ones((3,4,5,6))
    >>> np.rollaxis(a, 3, 1).shape       #把数组a的3轴滚动到1轴位置,其他轴相对位置相对不变
    (3, 6, 4, 5)
    >>> np.rollaxis(a, 2).shape          #目标位置可以缺省,默认为0,这里的np.rollaxis(a,2)等价于np.rollaxis(a,2,0)
    (5, 3, 4, 6)
    >>> np.rollaxis(a, 1, 4).shape
    (3, 5, 6, 4)

    详细一点的例子是:

    In:

    a = np.arange(12).reshape((3,2,2))
    
    print("原数组:\n")
    print(a)
    print(np.where(a==9))
    print(a.shape)
    print()
    
    
    #将2轴滚动到0轴
    print("执行rollaxis函数后:")
    b = np.rollaxis(a,2,0)
    print(b)
    print(np.where(b==9))
    print(b.shape)

    Out:

    原数组:
    [[[ 0  1]
      [ 2  3]]
     [[ 4  5]
      [ 6  7]]
     [[ 8  9]
      [10 11]]]
    (array([2], dtype=int64), array([0], dtype=int64), array([1], dtype=int64))    #即元素9所在的位置下标为(2,0,1)
    原数组形状: (3, 2, 2)


    执行rollaxis函数后:
    [[[ 0  2]
      [ 4  6]
      [ 8 10]]
     [[ 1  3]
      [ 5  7]
      [ 9 11]]]
    (array([1], dtype=int64), array([2], dtype=int64), array([0], dtype=int64))    #轴滚动之后元素9所在的位置下标为(1,2,0)
    轴滚动之后的数组形状:  (2, 3, 2)

    可以看出,元素的位置变化与轴变化一致。其实简单来说,轴滚动并不改变元素的大小,只是元素的位置下标因为轴的变化而变化了,相当于三维空间中旋转x,y,z轴,原来在(x,y)平面的点现在可能变成在(y,z)平面上的点了,但是大小并没变,只是相对坐标位置变化了而已。

     

    numpy.swapaxes(arr, axis1, axis2)
    • arr:输入的数组
    • axis1:对应第一个轴的整数
    • axis2:对应第二个轴的整数

    swapaxes函数的功能很简单,作用是直接交换两个轴,请看下面的例子。

    >>> a = np.ones((2,3,4,5,6))
    >>> np.swapaxes(a, 3, 1).shape
    (2, 5, 4, 3, 6)
    >>> np.swapaxes(a, 2,0).shape
    (4, 3, 2, 5, 6)
    >>> np.swapaxes(a, 4, 2).shape
    (2, 3, 6, 5, 4)
    

    详细的例子:

    In:

    a = np.arange(12).reshape((3,2,2))
    
    print("原数组:\n")
    print(a)
    print(np.where(a==9))
    print(a.shape)
    print()
    
    
    #将2轴和0轴直接交换
    print("执行swapaxes函数后:")
    b = np.swapaxes(a,2,0)
    print(b)
    print(np.where(b==9))
    print(b.shape)

    Out:

    原数组:
    [[[ 0  1]
      [ 2  3]]
     [[ 4  5]
      [ 6  7]]
     [[ 8  9]
      [10 11]]]
    (array([2], dtype=int64), array([0], dtype=int64), array([1], dtype=int64))     #元素9所在原始数组中的位置下标为(2,0,1)
    原数组形状: (3, 2, 2)
    执行rollaxis函数后:
    [[[ 0  4  8]
      [ 2  6 10]]
     [[ 1  5  9]
      [ 3  7 11]]]
    (array([1], dtype=int64), array([0], dtype=int64), array([2], dtype=int64))     #元素9在新数组中的位置下标为(1,0,2)
    新数组形状: (2, 2, 3)

     

     

    展开全文
  • 1、numpy中的数组 (1)数组维数 import numpy as np arr1d = np.arange(24).reshape(24) print('一维数组:', arr1d) arr2d = np.arange(24).reshape((4, 6)) print('二维数组:\n', arr2d) arr3d = np.a...

    1、numpy中的数组

    (1)数组维数

    import numpy as np
    
    arr1d = np.arange(24).reshape(24)
    print('一维数组:', arr1d)
    
    arr2d = np.arange(24).reshape((4, 6))
    print('二维数组:\n', arr2d)
    
    arr3d = np.arange(24).reshape(2, 3, 4)
    print('三维数组:\n', arr3d)
    

    输出结果:

    一维数组: [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
    二维数组:
     [[ 0  1  2  3  4  5]
     [ 6  7  8  9 10 11]
     [12 13 14 15 16 17]
     [18 19 20 21 22 23]]
    三维数组:
     [[[ 0  1  2  3]
      [ 4  5  6  7]
      [ 8  9 10 11]]
    
     [[12 13 14 15]
      [16 17 18 19]
      [20 21 22 23]]]
    
    Process finished with exit code 0

    arrange()方法产生整数0~23,并重新按指定维数分配。

    (2)数组元素索引

    一维数组arr1d可以通过下标i(0 =< i <= len(arr1d)-1)来索引,例如arr1d[6]=6,也就是说一个下标i对象数组中的一个元素,反之亦然。

    二维数组arr2d可以通过两个下标i(0 =< i <= 数组行数-1)和j(0 =< j <= 数组列数-1)来索引,例如arrd2d[2][5]=17,也就是说一对下标(i,j)对应数组中的一个元素。

    三维数组arr3d可以通过三个下标i(0 =< i <= reshape方法中第一个参数-1)、j(0 =< j <= 数组行数-1)和k(0 =< k <= 数组列数-1)来索引,例如arrd3d[0][1][2]=6,也就是说下标(i,j,k)对应数组一个元素。

    类似地,n维数组arrdnd可以通过下标(m1,m2,m3,...,mn)来索引。

    我们知道,对于二维平面中的一个点(x,y),x称为该点的横坐标或x-轴坐标,y称为该店的纵坐标或y-轴坐标,类似的,我们可以将下标(m1,m2,m3,...,mn)看成一个n维空间中的点,在这个空间中也有坐标轴,因为有n个坐标轴,用单个字母无法命名,所以我们给每个坐标轴编一个号,分别称为0-轴,1-轴,2-轴,……,n-轴。

     

    2、numpy的.T转置

    import numpy as np
    
    
    arr2d = np.arange(24).reshape((4, 6))
    print('二维数组:\n', arr2d)
    print('二维数组转置后:\n',arr2d.T)
    
    arr3d = np.arange(24).reshape(2, 3, 4)
    print('三维数组:\n', arr3d)
    print('三维数组转转置后:\n',arr3d.T)
    
    

    输出结果:

    二维数组:
     [[ 0  1  2  3  4  5]
     [ 6  7  8  9 10 11]
     [12 13 14 15 16 17]
     [18 19 20 21 22 23]]
    二维数组转置后:
     [[ 0  6 12 18]
     [ 1  7 13 19]
     [ 2  8 14 20]
     [ 3  9 15 21]
     [ 4 10 16 22]
     [ 5 11 17 23]]
    三维数组:
     [[[ 0  1  2  3]
      [ 4  5  6  7]
      [ 8  9 10 11]]
    
     [[12 13 14 15]
      [16 17 18 19]
      [20 21 22 23]]]
    三维数组转转置后:
     [[[ 0 12]
      [ 4 16]
      [ 8 20]]
    
     [[ 1 13]
      [ 5 17]
      [ 9 21]]
    
     [[ 2 14]
      [ 6 18]
      [10 22]]
    
     [[ 3 15]
      [ 7 19]
      [11 23]]]
    
    Process finished with exit code 0

    .T对二维数组操作比较容易,只是行列转换,三维看起来有些难度,更不要说n维数组了,那么.T究竟做了什么了,其实只是将数组下标反序,例如n维数组arrdnd的下标(m1,m2,m3,...,mn)对应的元素,经过.T转置后,在(mn,...,m2,m1)的位置上,例如:

    arrnd=np.arange(120).reshape(1,2,3,4,5)
    arrndT=arrnd.T
    print('arrnd[0][1][2][3][4]=', arrnd[0][1][2][3][4])
    print('arrndT[4][3][2][1][0]=', arrndT[4][3][2][1][0])

    输出结果:

    arrnd[0][1][2][3][4]= 119
    arrndT[4][3][2][1][0]= 119

    示例中定义了一个5维数组。

     

    3、 numpy的transpose

    首先我们来看一个三维数组的例子:

    import numpy as np
    
    arr3d = np.arange(24).reshape(2, 3, 4)
    print('三维数组:\n', arr3d)
    arr3dT=arr3d.transpose(1, 0, 2)
    print('三维数组转转置后:\n', arr3dT)

    输出结果:

    三维数组:
     [[[ 0  1  2  3]
      [ 4  5  6  7]
      [ 8  9 10 11]]
    
     [[12 13 14 15]
      [16 17 18 19]
      [20 21 22 23]]]
    三维数组转转置后:
     [[[ 0  1  2  3]
      [12 13 14 15]]
    
     [[ 4  5  6  7]
      [16 17 18 19]]
    
     [[ 8  9 10 11]
      [20 21 22 23]]]
    
    Process finished with exit code 0

    transpose究竟做了什么?首先对三维数组的维数(2,3,4)依次编号0,1,2,称之为0-轴,1-轴,2-轴。transpose(1,0,2)表示对换了1-轴和0-轴(本来应该是0,1,2)的位置,2-轴没变。也就是说tranpose会将下标(i,j,k)对应的元素变换到下标(j,i,k)上。例如三维数组元素11的原来下标位置是(0,2,3),通过transpose应该变换到(2,0,3)的位置上,变化后的数组(2,0,3)的位置上确实是11。

     

    3、numpy的swapaxes

    swapaxes顾名思义是交换轴的意思。我们看个例子:

    import numpy as np
    
    arr3d = np.arange(24).reshape(2, 3, 4)
    print('三维数组:\n', arr3d)
    arr3dT=arr3d.swapaxes(2, 1)
    print('三维数组转转置后:\n', arr3dT)
    
    
    

    输出结果:

    三维数组:
     [[[ 0  1  2  3]
      [ 4  5  6  7]
      [ 8  9 10 11]]
    
     [[12 13 14 15]
      [16 17 18 19]
      [20 21 22 23]]]
    三维数组转转置后:
     [[[ 0  4  8]
      [ 1  5  9]
      [ 2  6 10]
      [ 3  7 11]]
    
     [[12 16 20]
      [13 17 21]
      [14 18 22]
      [15 19 23]]]
    
    Process finished with exit code 0

    swapaxes(p,q)(p和q是轴的编号)表示对换p和q轴,案例中表示对换1-轴和2-轴。

    展开全文
  • 1.numpy.ndarray属性1.1属性ndarray.ndim获取ndarray的维数ndarray.shape获取ndarray各个维度的长度ndarray.dtype获取ndarray中元素的数据类型ndarray.T简单转置矩阵ndarray1.2属性示例# -*- coding: utf-8 -*- ...
  • numpy.ndarray类型方法

    千次阅读 2020-07-19 14:22:37
    numpy.ndarray 类numpy.ndarray(shape,dtype = float,buffer = None,offset = 0,strides = None,order = None )[资源] 数组对象表示固定大小项的多维同构数组。关联的数据类型对象描述了数组中每个元素的格式...
  • numpy.ndarray

    2019-09-24 17:19:01
    class numpy.ndarray(shape, dtype=float, buffer=None, offset=0, strides=None, order=None)[source] An array object represents a multidimensional, homogeneous array of fixed-size items. An associated da...
  • 1. numpy.moveaxis(a, source, destination)[source]Move axes of an array to new positions.Other axes remain in their original order.New in version 1.11.0.Parameters:a : np.ndarrayThe array whose axes...
  • Numpy库之swapaxes(a,x,y)方法理解

    千次阅读 2020-01-12 17:24:01
    import numpy as np a = np.arange(24).reshape((2,3,4)) 生成如下数组: 方法理解: a.swapaxes(x,y),是将n维数组中两个维度进行调换,其中x,y的值为a.shape值(2,3,4)元组中的索引值(下标)。 ...
  • numpy.rollaxis 函数向后滚动特定的轴到一个特定位置,格式如下: numpy.rollaxis(arr, axis, start) 参数说明: arr:数组 axis:要向后滚动的轴,其它轴的相对位置不会改变 start:默认为零,表示完整的滚动...
  • x array([ 1., 2., 3., 4.]) >>> x.T array([ 1., 2., 3., 4.]) 四个函数之间的联系 numpy.ndarray.T相当于numpy.transpose在二维矩阵情况下的一种简便表达 numpy.rollaxis是numpy.swapaxes的特殊情况,numpy....
  • import numpy as np # reshape(shape) 不改变数组元素,返回一个shape形状的数组,原数组不变 a = np.arange(20) print(a.reshape([4,5])) print(a) # resize 修改原数组 print(a.resize([4,5])) print(a) #...
  • numpy库对多维数组有非常灵巧的处理方式,主要的处理方法有: .reshape(shape) : 不改变数组元素,返回一个shape形状的数组,原数组不变 .resize(shape) : 与.reshape()功能一致,但修改原数组 In [22]: a = np.a...
  • numpy中transpose和swapaxes函数讲解

    万次阅读 多人点赞 2017-04-23 19:34:53
    transpose和swapaxes函数讲解 transpose() 这个函数如果括号内不带参数,就相当于转置,和.T效果一样,而今天主要来讲解其带参数。 我们看如下一个numpy的数组: `arr=np.arange(16).reshape((2,2,4)) arr= ...
  • 参考链接: Python中的numpy.arctan The following are code examples for showing how to use . They are extracted from open source Python projects. You can vote up the examples you like or vote down the ...
  • numpy.rollaxis()详解

    2020-04-23 16:58:29
    numpy.rollaxis()详解 转载PMPWDF 最后发布于2019-07-13 17:14:58 阅读数 198 收藏 展开 numpy.rollaxis(a, axis, start=0) 向后滚动指定的轴,直到它位于给定位置。 参数: a:ndarray 输入数组。 axis:int 轴向后...
  • numpy transpose 和 swapaxes两种转置方法

    千次阅读 2018-08-05 10:53:09
    transpose: 已3维举例, 0 代表 x 轴,1 代表 y 轴,2 代表 z 轴, transpose(0,1,2) 可以理解维 tanspose(x,y,z) x,y, z 的顺序与数组...swapaxes 只接受两个参数,即表示需要转换的两个轴的索引,  
  • 在研究numpy的时候发现数组是一个很抽象的概念,毕竟远离数学多年,其转置和换轴更是不知所谓了。所以花了一些时间通过画图搞清楚了一些东西。 数组在三维空间的表示方法 两轴数组 arr2 = numpy.arange(8).reshape(2...
  • numpy T、transpose()函数、swapaxes()函数

    千次阅读 2020-01-09 20:02:26
    1 矩阵转置T,也既2维数组 ...3 swapaxes()函数接受的参数是一对轴编号 1 矩阵转置T,既线性代数中矩阵转置 示例程序如下: import numpy as np a = np.arange(0,24,2).reshape(3, 4) print('*****a****') ...
  • numpy使用

    2018-02-01 14:20:00
    一、numpy概述 numpy(Numerical Python)提供了python对多维数组对象的支持:ndarray,具有矢量运算能力,快速、节省空间。numpy支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。 二、...
  • arr.swapaxes(0,2)=arr.swapaxes(2,0) 跟转置同 arr.swapaxes(0,2) Out[25]: array([[[ 0, 8], [ 4, 12]], [[ 1, 9], [ 5, 13]], [[ 2, 10], [ 6, 14]], .flatten() 对数组进行降维,返回折叠后的一...
  • numpy.rollaxis(arr, axis, start) arr:输入数组 axis:要向后滚动的轴,其它轴的相对位置不会改变 start:默认为零,表示完整的滚动。会滚动到特定位置 import numpy as np a = np.arange(8).reshape(2, 2, 2...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,813
精华内容 1,125
关键字:

numpy.swapaxes