清華學(xué)神尹成帶你學(xué)習(xí)NumPy
什么是Numpy?
NumPy是Python中科學(xué)計算的基礎(chǔ)包。它是一個Python庫,提供多維數(shù)組對象,各種派生對象(如掩碼數(shù)組和矩陣),以及用于數(shù)組快速操作的各種API,有包括數(shù)學(xué)、邏輯、形狀操作、排序、選擇、輸入輸出、離散傅立葉變換、基本線性代數(shù),基本統(tǒng)計運算和隨機模擬等等。
NumPy包的核心是 ndarray 對象。它封裝了python原生的同數(shù)據(jù)類型的 n 維數(shù)組,為了保證其性能優(yōu)良,其中有許多操作都是代碼在本地進(jìn)行編譯后執(zhí)行的。
NumPy數(shù)組 和 原生Python Array(數(shù)組)之間有幾個重要的區(qū)別
NumPy 數(shù)組在創(chuàng)建時具有固定的大小,與Python的原生數(shù)組對象(可以動態(tài)增長)不同。更改ndarray的大小將創(chuàng)建一個新數(shù)組并刪除原來的數(shù)組。
NumPy 數(shù)組中的元素都需要具有相同的數(shù)據(jù)類型,因此在內(nèi)存中的大小相同。 例外情況:Python的原生數(shù)組里包含了NumPy的對象的時候,這種情況下就允許不同大小元素的數(shù)組。
NumPy 數(shù)組有助于對大量數(shù)據(jù)進(jìn)行高級數(shù)學(xué)和其他類型的操作。通常,這些操作的執(zhí)行效率更高,比使用Python原生數(shù)組的代碼更少。
越來越多的基于Python的科學(xué)和數(shù)學(xué)軟件包使用NumPy數(shù)組; 雖然這些工具通常都支持Python的原生數(shù)組作為參數(shù),但它們在處理之前會還是會將輸入的數(shù)組轉(zhuǎn)換為NumPy的數(shù)組,而且也通常輸出為NumPy數(shù)組。換句話說,為了高效地使用當(dāng)今科學(xué)/數(shù)學(xué)基于Python的工具(大部分的科學(xué)計算工具),你只知道如何使用Python的原生數(shù)組類型是不夠的 - 還需要知道如何使用 NumPy 數(shù)組。
關(guān)于數(shù)組大小和速度的要點在科學(xué)計算中尤為重要。舉一個簡單的例子,考慮將1維數(shù)組中的每個元素與相同長度的另一個序列中的相應(yīng)元素相乘的情況。如果數(shù)據(jù)存儲在兩個Python 列表 a 和 b 中,我們可以迭代每個元素,如下所示: