Numpy数组的组合与分割实现的方法

Numpy数组的组合与分割实现的方法,博智网带你了解详细信息 。
目录

  • 数组的组合
    • 1.水平组合
    • 2.垂直组合
    • 3.行组合和列组合
    • 4.深度组合
  • 数组的分割
    • 1.水平分割
      • 1.1hsplit函数
      • 1.2split函数
    • 2.垂直分割
      • 3.深度分割

      在介绍数组的组合和分割前 , 我们需要先了解数组的维(ndim)和轴(axis)概念 。
      如果数组的元素是数组 , 即数组嵌套数组 , 我们就称其为多维数组 。几层嵌套就称几维 。比如形状为(a , b)的二维数组就可以看作两个一维数组 , 第一个一维数组包含a个一维数组 , 第二个一维数组包含b个数据 。
      每一个一维线性数组称为一个轴 。二维数组的第一个轴(axis=0)就是以数组为元素的数组 , 第二个轴(axis=1)就是数组中的数组 。因此第一个轴的方向就是沿着行的方向(垂直方向) , 第二个轴的方向沿着列的方向(水平方向) 。
      我们从嵌套数组的角度来看 , a[0] , a[1] , a[2] , a[3]……分别是取二维数组的第一行 , 二行 , 三行 , 四行……这正是先沿着第一个轴取元素(元素为行) 。a[0][0] , a[0][1]……则是(沿着第二个轴)取第一行的第一个元素 , 第二个元素……
      也就是说 , 数组的轴从最外层数起 。
      三维数组我们应该怎么理解呢?我们可以把它看作二维数组的堆叠 , 即一个立方体 。它的第一个轴(axis=0)就是以二维数组为元素的数组 , 它的方向沿着二维数组堆叠的方向 , 也就是立方体的高 。第二个轴自然就是立方体的宽 , 第三个轴就是立方体的长 。举例来说 , 一个形状为(a , b , c)的三维数组就是a个形状为(b , c)的二维数组嵌套在一起 。
      a=np.arange(24).reshape(2,3,4)#建立一个维度为3 , 形状为(2 , 3 , 4)的三维数组print(a)#打印print(a.sum(axis=0))#沿第一个轴求和print(a.sum(axis=1))#沿第二个轴求和print(a.sum(axis=2))#沿第三个轴求和'''a的形状如下:[[[ 0123][ 4567][ 89 10 11]] [[12 13 14 15][16 17 18 19][20 21 22 23]]]沿第一个轴求和: [[12 14 16 18] [20 22 24 26] [28 30 32 34]]沿第二个轴求和: [[12 15 18 21] [48 51 54 57]]沿第三个轴求和:[[ 6 22 38] [54 70 86]]'''
      从这个例子可以看出 , 沿第一个轴求和 , 就是从上方把这个立方体“压扁” , 第二个轴就是沿着宽 , 第三个轴就是沿着长 。类似投影 。
      我们终于明白了 , reshape函数的参数顺序不是我们想当然认为的长 , 宽;长 , 宽 , 高;因为你无法解释为什么三维数组变形后的形状与你所想的大相径庭 。它的顺序是轴的顺序(第一条轴 , 第二条轴 , 第三条轴……) , 也就是沿这条轴有多少个元素 。轴的概念很重要 , 在很多函数中都有体现 。
      再直观一点说 , 参数顺序应该是高 , 宽(行方向) , 长(列方向) 。
      所以 , 数组的维度就很好理解了 , 就是轴的数量 。我们在理解多维数组的时候 , 不要先入为主地认为多维数组的元素会更多;多维数组只是它嵌套的层数多而已 。高维数组也可能不含元素 。
      接下来我们介绍数组的组合 。
      数组的组合数组的组合有水平组合 , 垂直组合 , 深度组合等方式 。实现这些组合的函数主要有vstack , dstack , hstack , column_stack , row_stack , concatenate等 。
      因为我们最常用的数组也不过三维 , 所以用水平 , 垂直这样的字眼比较形象;但我们要明白 , 本质上是沿轴进行的操作 。
      数组组合通常不会改变数组的维度 。
      1.水平组合hstack函数与concatenate函数
      1.1hstack函数:水平连接多个数组 。参数只有一个:以数组为元素的序列 。
      1.2concatenate函数:沿着现有的轴连接数组序列 。
      函数格式:concatenate((a1, a2, ...), axis=0, out=None)
      参数说明:a1, a2, ...:为以数组为元素的类数组序列 。其中数组形状必须相同 。

      推荐阅读