Python中vstack,numpy.vstack

  Python中vstack,numpy.vstack

  今天,边肖将在numpy中解释vstack和hstack的两个功能。

  vstack和hstack都是numpy中用来合并两个小数组的函数。它们不仅名字相似,用法也相似,所以很容易混淆。首先,我们需要澄清几个共性:

  1.这两个函数只接收一个参数:vstack(tup)和hstack(tup)。但是,如前所述,这两个函数用于合并两个数组,所以我们需要传递两个数组。因此,vstack和hstack接收一个元组,该元组有两个元素,即要操作的两个数组。

  用法如vstack((list1,list2))。注意有两个括号。

  2.使用vstack时,“行数”要一致(即第一维大小要相等);使用hstack时,“列数”是必需的,否则会出错。

  3.如果输入的两个数组是一维的(n),它们将首先被维度增加(1,n)。其他维度不升级。

  看看两者的区别。首先从名字上看,stack是“栈”的意思,V指V。

  ertical——“垂直的”,h指horizontal——“水平的”。也就是说vstack是“垂直地堆叠”,hstack是“水平地堆叠”。

  


  

好了,接下来通过几个例子进一步了解一下vstack和hstack。

  


  

import numpy as np

  if __name__ == '__main__':

   ls1 = [1,2,3]

   ls2 = [4,5,6]

   ls3 = [[1,2], [3,4]]

   ls4 = [[5,6], [7,8]]

   ls5 = [[[1],[2]], [3,4]]

   ls6 = [[[5],[6]], [7,8]]

   print(np.vstack((ls1, ls2)))

   print(np.hstack((ls1, ls2)))

   print(np.vstack((ls3, ls4)))

   print(np.hstack((ls3, ls4)))

   print(np.vstack((ls5, ls6)))

   print(np.hstack((ls5, ls6)))

  


  

面程序的输出:

  


  

[[1 2 3]

   [4 5 6]]

  [1 2 3 4 5 6]

  [[1 2]

   [3 4]

   [5 6]

   [7 8]]

  [[1 2 5 6]

   [3 4 7 8]]

  [[list([1]) list([2])]

   [3 4]

   [list([5]) list([6])]

   [7 8]]

  [[list([1]) list([2]) list([5]) list([6])]

   [3 4 7 8]]

  


  

乍一看可能不好理解,一维数组和多维数组的处理方式并不相同。但是从上面的程序我们不难发现,我们只需要将一维的数组升维到二维,就可以将两种处理方式统一:可以将数组都看成“二维”,只不过高维数组的元素仍是数组。

  

  • vstack:按索引取出每个元素,“并排”放入新的数组。如[ 1 , 2 ] [1,2][1,2][ 3 , 4 ] [3,4][3,4],就会变成

      

[1,2]

  

[3,4]

  

当然,在数组中会以逗号分隔

  

  • hstack:按索引取出每个元素,“合并”放入新的数组。

      

[ 1 , 2 ] [1,2][1,2][ 3 , 4 ] [3,4][3,4],就会变成

  

[1,2,3,4]

  

  

当然,在数组中会以逗号分隔

  

需要特别注意的是

  


  

np.hstack((ls1, ls2))

  


  

这一个,在升维得到结果后,如果仍是(1,N)维的,就变回(N)维。

  

  


  

以上就是numpy中vstack和hstack函数的详细讲解。更多Python学习推荐:PyThon学习网教学中心

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

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