天天看點

np.hstack() and np.dstack()

提到numpy數組就不得不說到​

​np.hstack()​

​​與​

​np.dstack()​

​​的問題。這裡我們研究一下它們的使用方法。

我們先來看 一下​​

​np.hstack()​

​函數,代碼如下:

# -*- coding: utf-8 -*-
import numpy as np


class Debug:
    def __init__(self):
        self.x = np.array([1, 2, 3])
        self.y = np.array([4, 5, 6])
        self.x1 = np.array([[1],[2],[3]])
        self.y1 = np.array([[4],[5],[6]])
        
    def mainProgram(self):
        z = np.hstack((self.x, self.y))
        z1 = np.hstack((self.x1, self.y1))
        print("The value of z is: ")
        print(z)
        print("The value of z1 is: ")
        print(z1)
        

if __name__ == "__main__":
    main = Debug()
    main.mainProgram()
"""
The value of z is: 
[1 2 3 4 5 6]
The value of z1 is: 
[[1 4]
 [2 5]
 [3 6]]
"""      

我們可以看到​

​np.hstack()​

​​會将​

​numpy​

​​數組沿着橫向堆疊,我們也可以說是沿着​

​x​

​軸方向堆疊。其實​

​np.hstack()​

​函數中的​

​h​

​就是​

​horizontal​

​的意思,意思為橫向,而​

​stack​

​就是堆疊的意思。

我們再來看一下​​

​np.vstack()​

​,代碼如下:

# -*- coding: utf-8 -*-
import numpy as np


class Debug:
    def __init__(self):
        self.x = np.array([1, 2, 3])
        self.y = np.array([4, 5, 6])
        self.x1 = np.array([[1],[2],[3]])
        self.y1 = np.array([[4],[5],[6]])
        
    def mainProgram(self):
        z = np.vstack((self.x, self.y))
        z1 = np.vstack((self.x1, self.y1))
        print("The value of z is: ")
        print(z)
        print("The value of z1 is: ")
        print(z1)
        

if __name__ == "__main__":
    main = Debug()
    main.mainProgram()
"""
The value of z is: 
[[1 2 3]
 [4 5 6]]
The value of z1 is: 
[[1]
 [2]
 [3]
 [4]
 [5]
 [6]]
"""      

我們可以看到​

​np.vstack()​

​​會将​

​numpy​

​​數組沿着縱向堆疊,我們也可以說是沿着​

​y​

​軸方向堆疊。其實​

​np.vstack()​

​函數中的​

​v​

​就是​

​vertical​

​的意思,意思為垂直方向,即縱向,同理​

​stack​

​是堆疊的意思, 是以整體表示沿着縱向堆疊。

綜上所述,​

​np.hstack()​

​​表示沿着橫向堆疊,​

​np.vstack()​

​​表示沿着縱向堆疊,需要注意它們的參數應該為一個元組,将需要堆疊的數組先組成一個元組再傳遞進入即可。當然,這裡隻是對兩個​

​numpy​

​數組進行堆疊操作,多個數組也是可以,将他們放在一起組成一個共同的元組即可,代碼如下:

# -*- coding: utf-8 -*-
import numpy as np


class Debug:
    def __init__(self):
        self.x = np.array([1, 2, 3])
        self.y = np.array([4, 5, 6])
        self.z = np.array([7, 8, 9])
        
    def mainProgram(self):
        z = np.vstack((self.x, self.y, self.z))
        print("The value of z is: ")
        print(z)
        

if __name__ == "__main__":
    main = Debug()
    main.mainProgram()
"""
The value of z is: 
The value of z is: 
[[1 2 3]
 [4 5 6]
 [7 8 9]]
"""