全能編程開發工程師必會np.vstack函數詳解

一、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-hant/n/369959.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
FDQAO的頭像FDQAO
上一篇 2025-04-14 02:23
下一篇 2025-04-18 13:40

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字符串操作中,capitalize函數常常被用到,這個函數可以使字符串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • Python中的while true:全能編程開發必知

    對於全能編程開發工程師而言,掌握Python語言是必不可少的技能之一。而在Python中,while true是一種十分重要的語句結構,本文將從多個方面對Python中的while…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • 單片機打印函數

    單片機打印是指通過串口或並口將一些數據打印到終端設備上。在單片機應用中,打印非常重要。正確的打印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的打印數據可以幫助我們快速…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變量時顯示的指定變量類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29
  • lsw2u1:全能編程開發工程師的利器

    lsw2u1是一款多功能工具,可以為全能編程開發工程師提供便利的支持。本文將從多個方面對lsw2u1做詳細闡述,並給出對應代碼示例。 一、快速存取代碼段 在日常開發中,我們總會使用…

    編程 2025-04-29

發表回復

登錄後才能評論