当前位置:   article > 正文

Python中数组堆叠(stack)_python堆叠

python堆叠

Python中数组堆叠(stack)

问题来源:
有一天一个朋友问我这个问题,我也是似懂非懂,就上网查找相关资料,但是看着大家的解答还是有点懵,就去请教了另一位朋友,算是解决了一些心中的疑惑,记录一下。
x1 = np.arange(9).reshape((3,3))
x2 = np.arange(10,19,1).reshape((3,3))

y2 = np.stack((x1,x2),axis=1)

举例说明:
用jupyter
首先创建4个3*3的二维数组:
在这里插入图片描述
从坐标的角度去理解这个问题。
先把原始数组每个元素坐标写出来:

array([[0, 1, 2],		(0,0)(0,1)(0,2)
       [3, 4, 5],		(1,0)(1,1)(1,2)
       [6, 7, 8]])		(2,0)(2,1)(2,2)
array([[10, 11, 12],	(0,0)(0,1)(0,2)
       [13, 14, 15],	(1,0)(1,1)(1,2)
       [16, 17, 18]])	(2,0)(2,1)(2,2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  1. x1和x2,axis = 0:
    在x1和x2中的x1前面加一个维度,因为是两个数组堆叠,所以堆叠后的数组shpe为(2,3,3),每9个元素一变换,星号里的就是后加的,
    坐标变换:
array([[0, 1, 2],		(*0*,0,0)(*0*,0,1)(*0*,0,2)
       [3, 4, 5],		(*0*,1,0)(*0*,1,1)(*0*,1,2)
       [6, 7, 8]])		(*0*,2,0)(*0*,2,1)(*0*,2,2)
array([[10, 11, 12],	(*1*,0,0)(*1*,0,1)(*1*,0,2)
       [13, 14, 15],	(*1*,1,0)(*1*,1,1)(*1*,1,2)
       [16, 17, 18]])	(*1*,2,0)(*1*,2,1)(*1*,2,2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

  1. x1和x2,axis = 1:
    在x1和x2中间加一个维度,因为是两个数组堆叠,所以堆叠后的数组shpe为(3,2,3),每6个元素一变换,星号里的就是后加的,
    坐标变换:
array([[0, 1, 2],		(0,*0*,0)(0,*0*,1)(0,*0*,2)
       [3, 4, 5],		(1,*0*,0)(1,*0*,1)(1,*0*,2)
       [6, 7, 8]])		(2,*1*,0)(2,*1*,1)(2,*1*,2)
array([[10, 11, 12],	(0,*1*,0)(0,*1*,1)(0,*1*,2)
       [13, 14, 15],	(1,*2*,0)(1,*2*,1)(1,*2*,2)
       [16, 17, 18]])	(2,*2*,0)(2,*2*,1)(2,*2*,2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

将变换后的元素按坐标填入相对应的位置就是变换后的数组形式,可以对照一下结果和变换后的坐标是不是一样的。
在这里插入图片描述

  1. x1和x2,axis = 2:
    在x1和x2最后面加一个维度,因为是两个数组堆叠,所以堆叠后的数组shpe为(3,3,2),每6个元素一变换,星号里的就是后加的,
    坐标变换:
array([[0, 1, 2],		(0,0,*0*)(0,1,*0*)(0,2,*0*)
       [3, 4, 5],		(1,0,*0*)(1,1,*0*)(1,2,*0*)
       [6, 7, 8]])		(2,0,*1*)(2,1,*1*)(2,2,*1*)
array([[10, 11, 12],	(0,0,*1*)(0,1,*1*)(0,2,*1*)
       [13, 14, 15],	(1,0,*2*)(1,1,*2*)(1,2,*2*)
       [16, 17, 18]])	(2,0,*2*)(2,1,*2*)(2,2,*2*)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

  1. x1、x2和x3,axis = 0:
    在这里插入图片描述

  2. x1、x2和x3,axis = 1:
    在这里插入图片描述

  3. x1、x2和x3,axis = 2:
    在这里插入图片描述

  4. x1、x2、x3和x4,axis = 0:
    在这里插入图片描述

  5. x1、x2、x3和x4,axis = 1:
    在这里插入图片描述

  6. x1、x2、x3和x4,axis = 2:
    在这里插入图片描述
    后面两个可以自己验证一下,就不一一写出来了。如果有不对的地方还请多多批评指正。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/233553
推荐阅读
相关标签
  

闽ICP备14008679号