深入理解NumPy數(shù)組堆疊與分割操作
背景簡(jiǎn)介
在數(shù)據(jù)分析和機(jī)器學(xué)習(xí)中,處理多維數(shù)據(jù)是一項(xiàng)基礎(chǔ)而關(guān)鍵的技能。NumPy作為Python中用于科學(xué)計(jì)算的核心庫(kù),提供了豐富的數(shù)組操作功能,其中數(shù)組的堆疊和分割是常用的兩種操作。通過(guò)堆疊,我們可以將多個(gè)數(shù)組合并為一個(gè)更大的數(shù)組;通過(guò)分割,我們可以將一個(gè)數(shù)組分解為多個(gè)較小的數(shù)組。本文將詳細(xì)介紹NumPy中數(shù)組堆疊與分割的原理和方法,并通過(guò)實(shí)例加深理解。
水平方向堆疊 hstack()
水平方向堆疊,通過(guò) np.concatenate() 函數(shù)并設(shè)置 axis=1 來(lái)實(shí)現(xiàn)。對(duì)于二維數(shù)組,其在水平方向上的堆疊要求除了堆疊軸(即列方向)以外的其他維度尺寸必須相同。例如:
arr1 = np.ones(shape=(2,2)) arr2 = np.zeros(shape=(2,3)) np.concatenate((arr1, arr2), axis=1)
結(jié)果將是一個(gè)形狀為 (2, 5) 的二維數(shù)組。
垂直方向堆疊 vstack()
垂直方向堆疊通過(guò) np.vstack() 函數(shù)實(shí)現(xiàn)。其要求參與堆疊的數(shù)組在垂直方向(即行方向)的尺寸相同,而其他維度可以不一致。例如:
arr2 = np.ones(shape=(2,3)) arr3 = np.zeros(shape=(3,3)) np.vstack((arr2, arr3))
結(jié)果將是一個(gè)形狀為 (5, 3) 的二維數(shù)組。
深度方向堆疊 dstack()
深度方向堆疊對(duì)應(yīng)的方法為 np.dstack() ,它可以將一系列數(shù)組在第三維度進(jìn)行堆疊。例如,對(duì)于圖像數(shù)據(jù)的RGB通道堆疊,可以實(shí)現(xiàn)如下:
red = np.arange(0,9).reshape(3,3) green = np.arange(9,18).reshape(3,3) blue = np.arange(18,27).reshape(3,3) np.dstack((red, green, blue))
結(jié)果將是一個(gè)形狀為 (3, 3, 3) 的三維數(shù)組。
列堆疊與行堆疊
np.column_stack() 用于按列方向堆疊一維數(shù)組,對(duì)于二維數(shù)組,其效果與 np.hstack() 相同。而 np.row_stack() 則用于按行方向堆疊,效果與 np.vstack() 相同。例如:
one = np.arange(3) two = 2 * one np.column_stack((one, two))
結(jié)果將是一個(gè)形狀為 (3, 2) 的二維數(shù)組。
數(shù)組的分割操作
NumPy提供了數(shù)組的分割操作,包括水平方向分割(hsplit)、垂直方向分割(vsplit)和深度方向分割(dsplit)。分割操作是堆疊操作的逆過(guò)程,允許我們將一個(gè)數(shù)組分割為多個(gè)子數(shù)組。例如:
array1 = np.arange(16.0).reshape(4,4) np.hsplit(array1, 2)
結(jié)果將是一個(gè)包含兩個(gè)數(shù)組的列表,每個(gè)數(shù)組形狀為 (4, 2) 。
總結(jié)與啟發(fā)
NumPy數(shù)組的堆疊與分割是數(shù)據(jù)處理中不可或缺的操作。通過(guò)本文的學(xué)習(xí),我們了解了如何在不同方向上對(duì)數(shù)組進(jìn)行堆疊與分割,以及它們的使用場(chǎng)景和注意事項(xiàng)。掌握這些操作將極大地提升我們處理多維數(shù)據(jù)的效率和靈活性。
了解和掌握NumPy中的這些高級(jí)操作,不僅能夠幫助我們更好地組織和處理數(shù)據(jù),還能為后續(xù)的機(jī)器學(xué)習(xí)模型的構(gòu)建和訓(xùn)練打下堅(jiān)實(shí)的基礎(chǔ)。熟練使用NumPy數(shù)組的堆疊與分割功能,可以使我們?cè)跀?shù)據(jù)科學(xué)領(lǐng)域更加得心應(yīng)手。
到此這篇關(guān)于深入理解NumPy數(shù)組堆疊與分割操作的文章就介紹到這了,更多相關(guān)NumPy數(shù)組堆疊與分割操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python代碼實(shí)現(xiàn)下載Odoo18在線文檔并生成markdown文檔
本文介紹了一個(gè)Odoo18在線文檔下載工具,通過(guò)Python腳本自動(dòng)爬取Odoo18中文文檔并轉(zhuǎn)換為PDF格式,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2026-04-04
Python代理抓取并驗(yàn)證使用多線程實(shí)現(xiàn)
這里沒(méi)有使用隊(duì)列只是采用多線程分發(fā)對(duì)代理量不大的網(wǎng)頁(yè)還行但是幾百幾千性能就很差了,感興趣的朋友可以了解下,希望對(duì)你有所幫助2013-05-05
pycharm打開chrome自動(dòng)退出錯(cuò)誤的解決方法
這篇文章主要給大家介紹了關(guān)于pycharm打開chrome自動(dòng)退出錯(cuò)誤的解決方法,文中通過(guò)實(shí)例代碼以及圖文將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07
使用Python對(duì)EXCEL數(shù)據(jù)的預(yù)處理
這篇文章主要介紹了使用Python處理EXCEL基礎(chǔ)操作篇2,如何使用Python對(duì)EXCEL數(shù)據(jù)的預(yù)處理,文中提供了解決思路和部分實(shí)現(xiàn)代碼,一起來(lái)看看吧2023-03-03
Python后臺(tái)開發(fā)Django的教程詳解(啟動(dòng))
這篇文章主要介紹了Python后臺(tái)開發(fā)Django(啟動(dòng)),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-04-04
Python讀取含url圖片鏈接的txt文檔方法小結(jié)
這篇文章主要為大家詳細(xì)介紹了三種Python讀取含url圖片鏈接的txt文檔方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04

