一、np.vstack函數概述
在Python中有很多數學計算庫可以使用。而numpy作為最常用的計算庫之一,其擁有強大的數組操作和數據處理能力。其中,np.vstack函數就是numpy中的一種介於數組拼接和平移之間的函數。它可以將多個數組以垂直方向堆疊在一起,返回一個新的數組。
下面我們通過實例,來深入理解這個函數:
import numpy as np a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) c = np.concatenate((a, b), axis=0) print(c) d = np.vstack((a, b)) print(d)
這裡我們首先定義a、b兩個一維數組。之後通過np.concatenate()函數將a、b按照axis=0(即縱向)拼接在一起,得到c=[1, 2, 3, 4, 5, 6]。 可以看到,這種操作並沒有改變a、b原來的維度,而是合併了它們的元素。
下面用同樣的a、b數組,我們將其通過np.vstack()函數進行垂直方向的堆疊,得到d=[[1,2,3],[4,5,6]]。這是一個二維數組,可以直觀的感受到這個函數實現的效果。
二、np.vstack函數語法
np.vstack函數的語法如下:
numpy.vstack(tup: Union[Tuple[numpy.ndarray, …], numpy.ndarray]) -> numpy.ndarray
其中,
tup:需要進行垂直堆疊的數組序列或一個二維數組。
返回值:返回一個新的垂直堆疊後的數組。
三、np.vstack函數應用案例
1. 使用np.vstack函數增加矩陣的行數
在實際應用中,我們有時候需要增加矩陣的行數。這時候,我們就可以使用np.vstack函數來實現。例如,我們要將一個n行3列的矩陣a平移成m行3列的矩陣b,其中n<m。
import numpy as np a = np.array([[1, 2, 3], [4, 5, 6]]) b = np.vstack((a, np.zeros((m-n,3))))
這裡我們將a和一個形狀為(m-n,3)、元素全為0的矩陣堆疊在一起,得到一個m行3列的矩陣b。其中,(m-n,3)即為將a的行數延長到m的行數時需要添加的全0行的行數。
2. 使用np.vstack函數拼接圖片並保存
在圖像處理領域中,我們經常需要將多張圖片拼接在一起。這時候,我們可以使用np.vstack函數來實現。例如,我們將兩張圖片按照垂直方向拼接起來,並保存為新的圖片。
import numpy as np import cv2 img1 = cv2.imread('img1.jpg', 1) img2 = cv2.imread('img2.jpg', 1) img_concat = np.vstack((img1, img2)) cv2.imwrite('img_concat.jpg', img_concat)
這裡我們先使用cv2.imread函數讀取img1和img2兩張圖片。之後通過np.vstack函數將兩張圖片拼接在一起得到img_concat,並使用cv2.imwrite函數將拼接後的圖片保存成一張新的jpeg格式的圖片。
3. 使用np.vstack函數堆疊矩陣並進行PCA分析
在數據處理與分析領域中,使用奇異值分解(SVD)來計算數據中的主成分分析(PCA)是一種常見的方法。其中,矩陣就是SVD基本算法中的重要數據結構之一。因此,我們可以使用np.vstack函數來進行矩陣的堆疊,從而進行主成分分析。
import numpy as np from sklearn.decomposition import PCA X1 = np.array([[2, 3], [7, 2], [8, 5], [3, 8], [5, 9]]) X2 = np.array([[4, 5], [3, 2], [9, 4], [7, 3], [1, 1]]) X = np.vstack((X1, X2)) pca = PCA(n_components=2) pca.fit(X) print(pca.explained_variance_ratio_)
這裡我們構造了兩個二維矩陣X1和X2。之後使用np.vstack函數堆疊得到新的二維矩陣X,其中的數據就是原來的矩陣堆疊構成的。最後,我們使用sklearn.decomposition模塊下的PCA類,對新的矩陣X進行主成分分析,並輸出前兩個主成分的方差佔比。
四、np.vstack函數使用注意事項
1. 需要注意垂直堆疊序列中各元素的維度是否一致。
2. 垂直堆疊所有數組的維數必須相同。
3. 垂直堆疊時,數據類型必須相同,否則將在堆疊時按照較高精度的數據類型來處理。
原創文章,作者:FDQAO,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/369959.html