Numpy 簡介

1. 什么是 NumPy?
Numpy,(Numerical Python 的縮寫),它是 Python 語言的一個(gè)擴(kuò)展程序庫,支持?jǐn)?shù)組結(jié)構(gòu)與矩陣運(yùn)算,并且針對數(shù)組運(yùn)算提供大量便捷的數(shù)學(xué)函數(shù)庫。Numpy 大大簡化了向量和矩陣的操作及處理流程,降低了數(shù)據(jù)開發(fā)的門檻。除了做數(shù)值計(jì)算和統(tǒng)計(jì)分析,在程序中處理和調(diào)試高級用例的時(shí)候,熟練掌握 Numpy 所帶來的優(yōu)勢和便利也不言而喻。
縱觀 Python 的開發(fā)生態(tài),Numpy 在數(shù)據(jù)分析、機(jī)器學(xué)習(xí)和科學(xué)計(jì)算領(lǐng)域,有著舉足輕重的定位。數(shù)據(jù)分析用到的 Pandas ,數(shù)據(jù)挖掘和深度學(xué)習(xí)用到的 Scikit-learn 和 Tensorflow,以及科學(xué)計(jì)算常用的 SciPy ,都是以 Numpy 為基礎(chǔ)進(jìn)行開發(fā)的。
2. NumPy 的特點(diǎn)
NumPy 是一個(gè)運(yùn)行速度非??斓臄?shù)學(xué)庫,主要包含如下能力:
- 一個(gè)高效的 N 維數(shù)組對象 ndarray;
- 廣播功能函數(shù),無須循環(huán)即可對數(shù)組進(jìn)行快速運(yùn)算;
- 讀寫磁盤以及操作內(nèi)存映射文件;
- 一個(gè)用于集成 C / C++ / Fortran 代碼的工具;
- 線性代數(shù)、傅里葉變換、隨機(jī)數(shù)生成等功能。
其中 ndarray 對象是 NumPy 包的核心,ndarray 對象和標(biāo)準(zhǔn)的 Python 序列數(shù)據(jù)結(jié)構(gòu)的顯著區(qū)別在于:
- ndarray 對象在創(chuàng)建時(shí)有固定的大小,這一點(diǎn)不同于 Python 列表。
- ndarray 對象中的元素都具有相同的數(shù)據(jù)類型,因此在存儲器中將具有相同的大小
- ndarray 對象便于對大量據(jù)進(jìn)行高級數(shù)學(xué)和其他類型的操作。在大數(shù)據(jù)時(shí)代,對幾百萬甚至更大的數(shù)據(jù)進(jìn)行頻繁的循環(huán)迭代計(jì)算,于每一個(gè)數(shù)據(jù)開發(fā)者而言都是一場巨大的災(zāi)難,而 Numpy 利用矢量化運(yùn)算,可以有效地避免這一點(diǎn)。
3. Numpy 的應(yīng)用領(lǐng)域
3.1 科學(xué)計(jì)算
NumPy 通常與 SciPy(Scientific Python)和 Matplotlib(繪圖庫)一起使用, 這種組合廣泛用于替代 MatLab,是一個(gè)強(qiáng)大的科學(xué)計(jì)算環(huán)境,有助于我們通過 Python 學(xué)習(xí)數(shù)值計(jì)算或者統(tǒng)計(jì)分析。Python 作為 MatLab 的替代方案,現(xiàn)在越來越被視為一種更加高效和可擴(kuò)展的實(shí)現(xiàn)語言。
3.1 數(shù)據(jù)分析
Numpy 專注于數(shù)組數(shù)據(jù)的處理,其和 Pandas 一起使用的時(shí)候,這種組合則將應(yīng)用范疇從數(shù)據(jù)拓展到各種表格和雜亂的數(shù)據(jù)格式,是一個(gè)非常有用的工作助力。在大數(shù)據(jù)時(shí)代,經(jīng)過合理的優(yōu)化編排,Numpy/ Pandas 組合處理幾個(gè) G 的數(shù)據(jù)綽綽有余,甚至處理能力上探到幾十個(gè) G。
4. 為什么要學(xué)習(xí) NumPy ?
Numpy 是基于 C 語言開發(fā),因此繼承了 C 語言運(yùn)算速度快、消耗資源少等優(yōu)點(diǎn),并且 Numpy 被廣泛應(yīng)用于數(shù)據(jù)分析、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)等領(lǐng)域,因此掌握 Numpy 對能力提升和職場晉升的重要性不言而喻。
5. 適用人群
越來越多的用于科學(xué)計(jì)算與分析的包以 Numpy 作為底層數(shù)據(jù)結(jié)構(gòu)基礎(chǔ),并且支持 Python 序列(如 list)作為輸入。例如上面提到的 Scikit-learn、Pandas,他們在進(jìn)行數(shù)據(jù)處理之前會默認(rèn)將輸入轉(zhuǎn)化為 Numpy 數(shù)組。但是為了更有效地使用這些工具,只知道如何使用是不夠的,還需要知道 Numpy 數(shù)組是如何工作的。
因此對于每一位從事科學(xué)計(jì)算、分析、數(shù)據(jù)處理相關(guān)工作的人,都需要學(xué)習(xí)并了解Numpy。
6. 本課程的學(xué)習(xí)基礎(chǔ)
Numpy 是 Python 開發(fā)生態(tài)中重要的一環(huán),因此在學(xué)習(xí) Numpy 之前,你需要具備一定的 Python 基礎(chǔ)。