Python 與 NumPy 教程:NumPy 數(shù)組簡介

言鼎科技 2023-06-09 388

介紹

最近,我們的 Python 團隊參加了一個研討會,技術(shù)愛好者們討論了 Python 以及用于數(shù)據(jù)分析、機器學(xué)習(xí)和數(shù)據(jù)科學(xué)的一流 Python 庫。NumPy 是討論最多的 Python 庫之一。它用于處理復(fù)雜的數(shù)學(xué)運算、數(shù)據(jù)分析和機器學(xué)習(xí)。研討會涵蓋了NumPy在python編程等各個領(lǐng)域的應(yīng)用。

在今天的 Python 與 NumPy 教程中,我們將了解 NumPy 并查看它所促進的方法的一些實際應(yīng)用。你們中的一些人可能不熟悉 NumPy 以及如何使用它。我們是來幫你的??赐晡覀兊慕坛?,你的疑惑就會迎刃而解。

什么是 NumPy?

NumPy是一個開源的 Python 項目,用于在 Python 中實現(xiàn)復(fù)雜的數(shù)值計算。它創(chuàng)建于 2005 年,包括用于處理屬于矩陣、傅立葉變換和線性代數(shù)等領(lǐng)域的任務(wù)的函數(shù)。

NumPy 簡單地意味著 Numerical Python。作為一個開源項目,NumPy 庫的全部源代碼都可以在github上找到。

為什么要使用 NumPy?

Python 由服務(wù)于數(shù)組目的的列表組成。但是,列表的處理速度較慢。NumPy 專注于提供比默認(rèn) Python 列表快近 50 倍的數(shù)組對象。NumPy 提供了一個名為數(shù)組. NumPy 提供的支持函數(shù)使得使用 ndarray 優(yōu)于傳統(tǒng)的 Python 列表。由于對速度和資源要求的重要性,數(shù)組不斷地用于數(shù)據(jù)科學(xué)和機器學(xué)習(xí)等領(lǐng)域。

NumPy 的優(yōu)點

與傳統(tǒng)的 Python 列表相比,使用 NumPy 和數(shù)組的主要好處是:

  • 更快的速度:在后臺,NumPy 使用用基本 C 語言編寫的算法,使它們的執(zhí)行在納秒而不是秒內(nèi)完成。

  • 減少對循環(huán)的依賴: NumPy 有助于改變對循環(huán)的依賴,防止程序員在迭代索引的嵌套中陷入混亂。

  • 更好的質(zhì)量:作為一個開源項目,NumPy 有成千上萬的貢獻者致力于使 NumPy 無錯誤、更快、更友好。

  • 更簡潔的代碼:在處理復(fù)雜的數(shù)學(xué)/數(shù)學(xué)或數(shù)值運算時,沒有循環(huán)的代碼看起來就像您要計算的方程式。

Python 與 NumPy:先決條件和技術(shù)棧

我們假設(shè)您事先了解以下內(nèi)容。

  • Python3編程

  • 虛擬環(huán)境

  • 康達(dá)/點

  • Google Colaboratory/Visual Studio 代碼編輯器

要開始使用本教程,請確保您具備以下條件。

  • Python

  • IDE(Google Colaboratory 或 Visual Studio Code)

我們將使用以下技術(shù)。

  • NumPy

  • Google Colaboratory/Visual Studio Code

讓我們開始探索 NumPy 的各種用例應(yīng)用程序。這是我的系統(tǒng)設(shè)置:

  • Ubuntu 20.04 操作系統(tǒng)

  • Python 3.8+

安裝 NumPy 使用

使用 pip 安裝 numpy 包(建議在虛擬環(huán)境中這樣做以避免污染您的操作系統(tǒng))。

Python 與 NumPy 教程:NumPy 數(shù)組簡介
pip 安裝 numpy

創(chuàng)建新目錄

創(chuàng)建一個新目錄并使用以下命令導(dǎo)航到它。

Python 與 NumPy 教程:NumPy 數(shù)組簡介
mkdir mynumpyprojectcd mynumpyproject

雖然上述步驟應(yīng)該是您開始使用 numPy 和 python 所需的全部步驟,但您可以選擇安裝更多的工具,以使使用數(shù)據(jù)科學(xué)庫對開發(fā)人員更加友好。這些工具可以是以下任何一種。

  • IPython

  • 木星筆記本

  • VS代碼

  • 谷歌實驗室

為了演示,我們將在 VS 代碼編輯器中使用 python 筆記本。

發(fā)現(xiàn)熟練的python開發(fā)人員,沒有開發(fā)后顧之憂!
提出您的要求,我們將幫助開發(fā)您的產(chǎn)品。Bacancy 經(jīng)驗豐富的開發(fā)人員適合您!立即聯(lián)系并聘請 Python 開發(fā)人員。

Python 與 NumPy: NumPy 入門

讓我們從使用 numPy 提供的基本數(shù)據(jù)類型開始,即numpy 數(shù)組。為此,讓我們從導(dǎo)入 numPy 包開始。

Python 與 NumPy 教程:NumPy 數(shù)組簡介
導(dǎo)入 numpy
my_array = numpy.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])打印(我的數(shù)組)

輸出:

Python 與 NumPy 教程:NumPy 數(shù)組簡介

現(xiàn)在,為了方便起見,numPy 通常以“np”作為別名導(dǎo)入。

*注意:別名是給任何事物的別名。

Python 與 NumPy 教程:NumPy 數(shù)組簡介
將 numpy 導(dǎo)入為 npmy_array = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])打印(我的數(shù)組)

輸出:

Python 與 NumPy 教程:NumPy 數(shù)組簡介

基于應(yīng)用的 NumPy 數(shù)組介紹

使用 NumPy 教程在 Python 中進一步移動,讓我們使用 NumPy 數(shù)組開始我們的核心應(yīng)用程序。

創(chuàng)建 NumPy 數(shù)組

在數(shù)據(jù)科學(xué)和機器學(xué)習(xí)應(yīng)用程序中使用 numPy 的主要原因是需要高效地使用數(shù)組。Numpy 提供稱為“ndarray”的數(shù)組對象。

numpy 函數(shù)“array()”可用于創(chuàng)建數(shù)組。

Python 與 NumPy 教程:NumPy 數(shù)組簡介
將 numpy 導(dǎo)入為 npblank_array = np.array([])打?。瞻讛?shù)組)
my_array = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])打印(我的數(shù)組)打?。愋停瞻讛?shù)組))

輸出:

Python 與 NumPy 教程:NumPy 數(shù)組簡介

*注意:numpy 數(shù)組需要使用“array()”函數(shù)傳遞一個對象。如果函數(shù)沒有傳遞對象類型參數(shù),它會返回一個語法錯誤。

“array()”函數(shù)可以通過將任何類似數(shù)組的對象傳遞給它的參數(shù)(如列表、元組等)來使用。

數(shù)組中的維度

數(shù)組可以根據(jù)其維度進行分類。

0-D 數(shù)組
0-D 數(shù)組也可以稱為標(biāo)量。數(shù)組的每個元素本身就是一個 0 維數(shù)組。

1-D Arrays
1-D arrays 可以被認(rèn)為是一個由多個 0-D 數(shù)組作為元素組成的數(shù)組。一維數(shù)組也叫一維數(shù)組,是最基本、最常用的數(shù)組。

二維數(shù)組
二維數(shù)組是由一維數(shù)組作為其元素組成的數(shù)組,常用于表示矩陣。

3-D 數(shù)組
3-D 數(shù)組是以矩陣(2-D 數(shù)組)作為其元素的數(shù)組。

Python 與 NumPy 教程:NumPy 數(shù)組簡介
將 numpy 導(dǎo)入為 npzero_d_array = np.array(23)print("0-D 數(shù)組", zero_d_array)one_d_array = np.array([0, 1, 2, 3])print("一維數(shù)組", one_d_array)two_d_array = np.array([[0, 1, 2], [9, 8, 7]])print("二維數(shù)組",two_d_array)three_d_array = np.array([[[0, 1, 2], [9, 8, 7]], [[0, 1, 2], [9, 8, 7]]])print("三維數(shù)組",three_d_array)

輸出:

Python 與 NumPy 教程:NumPy 數(shù)組簡介

高維數(shù)組

Numpy 中的數(shù)組不限于只有三個維度。數(shù)組可以具有任意數(shù)量的維度,并且可以使用“ndmin”參數(shù)創(chuàng)建以定義數(shù)組中的參數(shù)數(shù)量。

Python 與 NumPy 教程:NumPy 數(shù)組簡介
將 numpy 導(dǎo)入為 npmy_array = np.array([0, 1, 2, 3, 4, 5, 6], ndmin=4)print('數(shù)組維數(shù):', my_array.ndim)打?。ㄎ业臄?shù)組)

輸出:

Python 與 NumPy 教程:NumPy 數(shù)組簡介

這里,通過“ndmin”參數(shù),可以看出它支持任意維數(shù)的數(shù)組。在上面的例子中,第 4 個維度,最里面的維度,有七個元素。

NumPy 中的數(shù)組索引

在 Python with NumPy Tutorial 中,下一節(jié)將介紹 NumPy 中的數(shù)組索引??梢允褂脭?shù)組索引訪問數(shù)組元素??梢允褂闷渌饕栐L問任何數(shù)組元素。此外,應(yīng)該記住,與任何其他數(shù)組一樣,numPy 數(shù)組的索引也從 0 開始。因此,第一個元素的索引始終為 0,第二個元素的索引為 1,依此類推。

可以使用數(shù)組索引訪問元素以用于各種目的,例如訪問元素、使用元素進行各種數(shù)學(xué)運算等。

Python 與 NumPy 教程:NumPy 數(shù)組簡介
將 numpy 導(dǎo)入為 np
one_d_array = np.array([9, 8, 7, 6])
print("第一個元素:",one_d_array[0])print("第二個元素:",one_d_array[1])print("前2個元素相加:",one_d_array[0] + one_d_array[1])
two_d_array = np.array([[8,7,6,5], [4,3,2,1]])print("第一行第三個元素:", two_d_array[0,2])print("第二行第四個元素:", two_d_array[1,3])

輸出:

Python 與 NumPy 教程:NumPy 數(shù)組簡介

訪問 3-D 數(shù)組或其他更高維數(shù)組中的元素

當(dāng)談到訪問 3-D 數(shù)組或其他更高維數(shù)組中的元素時,它變得有點復(fù)雜。在操作它們之前,應(yīng)該確保了解數(shù)組的結(jié)構(gòu)或維度。以 3-D 數(shù)組為例:

Python 與 NumPy 教程:NumPy 數(shù)組簡介
將 numpy 導(dǎo)入為 npthree_d_array = np.array([[[9, 8, 7], [0, 1, 2]], [[7, 8, 9], [5, 4, 3]]])打?。╰hree_d_array[1, 0, 2])

輸出:

Python 與 NumPy 教程:NumPy 數(shù)組簡介

讓我們試著理解這段代碼的最后一行。

這里,
three_d_array[1, 0, 2]正在打印值 9。

相同的原因是第一個數(shù)字表示包含兩個數(shù)組的第一個維度:
[[9, 8, 7], [0, 1, 2]] 和 [[7, 8, 9], [5, 4 , 3]]

由于我們選擇了索引 1,因此剩下第二個數(shù)組:
[[7, 8, 9], [5, 4, 3]]

第二個數(shù)字代表第二個維度,也包含兩個數(shù)組:
[7, 8, 9] 和 [5, 4, 3]

由于我們選擇了索引 0,因此我們在索引 0 處留下了第一個數(shù)組:
[7, 8, 9]

現(xiàn)在,第三個數(shù)字代表第三個維度,其中包含這三個值:
7、8 和 9

由于我們選擇了索引 2,因此我們得到最終值:
9

負(fù)索引

負(fù)索引也可用于從末尾訪問數(shù)組元素。

Python 與 NumPy 教程:NumPy 數(shù)組簡介
將 numpy 導(dǎo)入為 npmy_array = np.array([[1,2,3,4,5], [6,7,8,9,10]])print('二維的最后一個元素:', my_array[1, -2])

輸出:

Python 與 NumPy 教程:NumPy 數(shù)組簡介

在這里,可以看出輸出是元素 9。

原因是語句“my_array[1, -2]”使用第一個索引值設(shè)置為 1 訪問維度的第二個數(shù)組,即
[6, 7, 8, 9, 10]

然后,設(shè)置為 -2 的第二個索引值訪問倒數(shù)第二個索引處的元素。
9

結(jié)論

所以,我希望 Python 和 NumPy 教程對您有所幫助。如需更多此類探索 Python 的教程,請訪問Python 教程頁面并開始學(xué)習(xí)。如果您有任何疑問或建議,請隨時與我們聯(lián)系。

(言鼎科技)

The End