vstack和hstack都是numpy中用于合并两个小数组的函数。他们俩不仅名字很像,用法也很像,所以很容易搞混。
首先需要明确几个共性:

两个函数都只接收一个参数:vstack(tup)和hstack(tup)。但是,正如前面说到的,这两个函数是用于合并两个数组的,所以我们需要传递两个数组。于是vstack和hstack接收一个元组,这个元组有两个元素,分别是需要操作的两个数组。
用法如vstack((list1, list2))。两个括号奥。
在使用vstack时,要求“行数”一致(即第一维大小相等);使用hstack时,要求“列数”,否则有error。
输入两个数组如果是一维的(N),则会先被升维(1,N)。其他维度则不做升维处理。
再看看二者的不同之处。
先从名字来理解,stack有“堆叠”的意思,而v指vertical——“垂直的”,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]]

 

posted on 2023-05-22 21:39  白的枫叶  阅读(89)  评论(0)    收藏  举报