知行编程网知行编程网  2022-10-06 14:00 知行编程网 隐藏边栏  166 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于Python基础:numpy中vstack和hstack函数的相关知识,包括python reshape函数,以及no stack这些编程知识,希望对大家有参考作用。



今天小编就

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指垂直——“垂直”,h指水平——“水平”。也就是说,vstack是“垂直堆叠”,hstack是“水平堆叠”。


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

<p><span>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)))<br/></span></p>





面程序的输出:

<p><span>[[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]]<br/></span></p>

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



  • 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]


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


需要特别注意的是

<p><span>np.hstack((ls1, ls2))<br/></span></p>

这一项,在升维得到结果后,如果还在(1,N)维,就变回(N)维。


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



本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享