提到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]]
"""