美文网首页收集好的文章
NumPy数组(堆叠数组)

NumPy数组(堆叠数组)

作者: Li77159 | 来源:发表于2018-07-10 09:38 被阅读0次

    堆叠数组

    从深度看,数组既可以横向叠放,也可以竖向叠放

    首先建立某些数组

    In [19]: a = np.arange(9).reshape(3,3)
    
    In [20]: a
    Out[20]: 
    array([[0, 1, 2],
           [3, 4, 5],
           [6, 7, 8]])
    
    In [21]: b = a * 2
    
    In [22]: b
    Out[22]: 
    array([[ 0,  2,  4],
           [ 6,  8, 10],
           [12, 14, 16]])
    
    
    • 水平叠加(hstack)
      • 首先用元祖确定数组的形状,然后由hstack()函数处理数组

            In [26]: np.hstack((a,b))
            Out[26]: 
            array([[ 0,  1,  2,  0,  2,  4],
                [ 3,  4,  5,  6,  8, 10],
                [ 6,  7,  8, 12, 14, 16]])
      
      • 使用concatenate()也能达到同样的效果

           In [27]: np.concatenate((a,b), axis=1)
           Out[27]: 
           array([[ 0,  1,  2,  0,  2,  4],
               [ 3,  4,  5,  6,  8, 10],
               [ 6,  7,  8, 12, 14, 16]])
      
    • 垂直叠加(vstack)
      • 首先用元祖确定数组的形状,然后由vstack()函数处理数组

           In [28]: np.vstack((a,b))
           Out[28]: 
           array([[ 0,  1,  2],
                  [ 3,  4,  5],
                  [ 6,  7,  8],
                  [ 0,  2,  4],
                  [ 6,  8, 10],
                  [12, 14, 16]])
      
      • 当axis值为0时,concatenate()函数也能达到同样的效果.实际上,这是该函数的缺省值

            In [29]: np.concatenate((a,b), axis=0)
            Out[29]: 
            array([[ 0,  1,  2],
                   [ 3,  4,  5],
                   [ 6,  7,  8],
                   [ 0,  2,  4],
                   [ 6,  8, 10],
                   [12, 14, 16]])
      
    • 深度叠加(dtsack)

      这要用到dtsack()函数和一个元祖.这种方法是沿着第三个坐标轴(纵向)的方向来叠加一摞数组.可以在一个图像数据的二维码数组上叠加另一幅图像的数据

        In [30]: np.dstack((a,b))
        Out[30]: 
        array([[[ 0,  0],
                [ 1,  2],
                [ 2,  4]],
      
               [[ 3,  6],
                [ 4,  8],
                [ 5, 10]],
      
               [[ 6, 12],
                [ 7, 14],
                [ 8, 16]]])
      
    • 列式堆叠(column_stack)

      column_stack()函数以列方式对一维数组进行堆叠

        In [31]: oned = np.arange(2)
      
        In [32]: oned
        Out[32]: array([0, 1])
      
        In [33]: twice_oned = oned * 2
      
        In [34]: twice_oned
        Out[34]: array([0, 2])
      
        In [35]: np.column_stack((oned,twice_oned))
        Out[35]: 
        array([[0, 0],
               [1, 2]])
      
      使用这张方法堆叠数组,过程类似于hstack()函数
      In [36]: np.column_stack((a,b))
      Out[36]: 
      array([[ 0,  1,  2,  0,  2,  4],
             [ 3,  4,  5,  6,  8, 10],
             [ 6,  7,  8, 12, 14, 16]])
      
      In [37]: np.column_stack((a,b)) == np.hstack((a,b))
      Out[37]: 
      array([[ True,  True,  True,  True,  True,  True],
             [ True,  True,  True,  True,  True,  True],
             [ True,  True,  True,  True,  True,  True]], 
             dtype=bool)
      
    • 行式堆叠(row_stack)

      row_stack()函数它将数组作为行码放到二维数组中

        In [38]: np.row_stack((oned,twice_oned))
        Out[38]: 
        array([[0, 1],
            [0, 2]])
      
        In [39]: np.row_stack((a,b))
        Out[39]: 
        array([[ 0,  1,  2],
               [ 3,  4,  5],
               [ 6,  7,  8],
               [ 0,  2,  4],
               [ 6,  8, 10],
               [12, 14, 16]])
      
        In [40]: np.row_stack((a,b)) == np.vstack((a,b))
        Out[40]: 
        array([[ True,  True,  True],
               [ True,  True,  True],
               [ True,  True,  True],
               [ True,  True,  True],
               [ True,  True,  True],
               [ True,  True,  True]],
               dtype=bool)
      

    结束语

    如果您对这篇文章有什么意见或者建议,请评论与我讨论.
    如果您觉得还不错的话~可以点个喜欢鼓励我哦.
    如果您想和我一起学习,请毫不吝啬的私信我吧~

    相关文章

      网友评论

        本文标题:NumPy数组(堆叠数组)

        本文链接:https://www.haomeiwen.com/subject/kqxfpftx.html