python里array函数,ARRAYSIZE

  python里array函数,ARRAYSIZE

  1.引言众所周知,python的numpy模块在数据分析中起着重要的作用,因为它定义的ndarray(n维数组)对象比python的基础类库定义的list对象具有更高的灵活性和更广的应用范围。更重要的是,由于numpy模块是用C语言编写的,所以计算机处理ndarray对象的速度要比list对象快得多。看一个例子:

  导入numpy为NP my _ arr=NP . arrange(1000000)my _ list=list(range(1000000))% time for _ in range(10):my _ arr 2=my _ arr * 2 CPU时间:user 17.7 ms,sys: 12.5 ms,Total:30.1 ms Wall time:29.9 ms % time for _ in range(10):my _ list 2=[x * 2 for x in my _ list]CPU时间:user 525虽然实际数据分析中使用的数据只会更大,但使用ndarray显然是更明智的选择。二。numpy中transpose函数和swapaxes函数的用法。首先,从一个二维数组开始,按如下方式构造一个数组:

  Arr=NP。阿兰格(15)。整形((3,5)) arr数组([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]])我们可以把这里的arr看成一个35阶的矩阵。学过线性代数的朋友应该知道,矩阵元素0可以表示为a11,7表示为a23,13表示为a34。在对应的数组中,0可以表示为arr[0][0],7可以表示为arr[1][2],13可以表示为arr[2][3]。

  我们可以用arr[m][n](m=0,1,2;N=0,1,2,3)来表示该数组中的元素。此时我们称这个二位数组arr为有两个轴,分别表示为0和1,其中M对应的轴为0,N对应的轴为1。转置与上述数组对应的矩阵:

  由…改编t数组([[ 0,5,10] 5,10],[1,6,11],[2,7,12],[3,8,13],[4,9,14])相信学过线性代数的朋友很容易理解,这种矩阵转置运算相当于交换0轴和1轴。

  arr.swapaxes(1,0) array([[ 0,5,10],[ 1,6,11],[ 2,7,12],[ 3,8,13],[ 4,9,14]]) arr.transpose(1,0) array([[ 0,5,10],[ 1,6,11],[ 2,7,12],[3,8,13],[4,9,14]])可以看出上述变换是等价的,并且是

  二维数组相对容易理解,三维数组相对复杂,但基本原理不变,只是在两位数组上加了一个轴。构建以下三维数组:

  Arr=NP。阿兰格(24岁)。整形((2,3,4)) arr数组([[0,1,2,3],[4,5,6,7],[8,9,10,11],[[12,11] y=0,1,2;Z=0,1,2,3),其中x对应0轴,y对应1轴,z对应2轴。看下图会更直观:

  从上图可以看出,元素0可以表示为arr [0] [0],元素6可以表示为arr[0][1][2],元素12可以表示为arr[1][0][0],元素18可以表示为arr[1][1][2],元素22可以表示为此时,如果使用函数transpose(1,0,2),则表示0轴和1轴互换,2轴不变,即arr[x][y][z]中x和y的位置不变

  由…改编transpose ((1,0,2) array ([[0,1,2,3],[12,13,14,15]],[[4,5,6,7],[16,17,18,19]],[ Swapaxes(1,2)表示1轴和2轴的位置互换,0轴不变:arr。SwapAxes (1,2)数组([[0,4,8],[1,5,9],[2,6,10],[3,7,11])。

  这个问题的关键在于搞清楚轴和元素位置的对应关系,轴变换时对应的元素位置会如何变化,从而导致整个数组的形状变化。

  (希望第一次写博客的你能理解我的不足;请随时让我知道哪些地方可以改进。谢谢)

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: