NumPy 的前身 Numeric 最早是由 Jim Hugunin 與其它協(xié)作者共同開(kāi)發(fā),2005 年,Travis Oliphant 在 Numeric 中結(jié)合了另一個(gè)同性質(zhì)的程序庫(kù) Numarray 的特色,并加入了其它擴(kuò)展而開(kāi)發(fā)了 NumPy。NumPy 為開(kāi)放源代碼并且由許多協(xié)作者共同維護(hù)開(kāi)發(fā)。
NumPy包的核心是 ndarray 對(duì)象。它封裝了python原生的同數(shù)據(jù)類型的 n 維數(shù)組,為了保證其性能優(yōu)良,其中有許多操作都是代碼在本地進(jìn)行編譯后執(zhí)行的。
NumPy數(shù)組 和 原生Python Array(數(shù)組)之間有幾個(gè)重要的區(qū)別:
NumPy 數(shù)組在創(chuàng)建時(shí)具有固定的大小,與Python的原生數(shù)組對(duì)象不同,更改ndarray的大小將創(chuàng)建一個(gè)新數(shù)組并刪除原來(lái)的數(shù)組。NumPy 數(shù)組元素需具有相同的數(shù)據(jù)類型,因此在內(nèi)存中的大小相同。NumPy 數(shù)組有助于對(duì)大量數(shù)據(jù)進(jìn)行高級(jí)數(shù)學(xué)和其他類型的操作。通常,這些操作的執(zhí)行效率更高,比使用Python原生數(shù)組的代碼更少。越來(lái)越多的基于Python的科學(xué)和數(shù)學(xué)軟件包使用NumPy數(shù)組,但它們?cè)谔幚碇皶?huì)會(huì)將輸入的數(shù)組轉(zhuǎn)換為NumPy的數(shù)組。
在開(kāi)學(xué)習(xí) NumPy 教程之前,我們需要具備基本的 Python 基礎(chǔ),本網(wǎng)站推薦使用Python3.x版本,如果你對(duì) Python還不了解,可以閱讀我們的Python教程
在 Python 中,我們有滿足數(shù)組功能的列表,但是處理起來(lái)很慢。NumPy 旨在提供一個(gè)比傳統(tǒng) Python 列表快 50 倍的數(shù)組對(duì)象。NumPy 中的數(shù)組對(duì)象稱為 ndarray,它提供了許多支持函數(shù),使得利用 ndarray 非常容易。數(shù)組在數(shù)據(jù)科學(xué)中非常常用,因?yàn)樗俣群唾Y源非常重要。數(shù)據(jù)科學(xué):計(jì)算機(jī)科學(xué)的一個(gè)分支,研究如何存儲(chǔ)、使用和分析數(shù)據(jù)以從中獲取信息。
與列表不同,NumPy 數(shù)組存儲(chǔ)在內(nèi)存中的一個(gè)連續(xù)位置,因此進(jìn)程可以非常有效地訪問(wèn)和操縱它們。
這種行為在計(jì)算機(jī)科學(xué)中稱為引用的局部性。
這是 NumPy 比列表更快的主要原因。它還經(jīng)過(guò)了優(yōu)化,可與最新的 CPU 體系結(jié)構(gòu)一同使用。
NumPy 通常與 SciPy一起使用,這種組合廣泛用于代替 MatLab,有助于我們通過(guò) Python 學(xué)習(xí)數(shù)據(jù)科學(xué)或者機(jī)器學(xué)習(xí)。SciPy 是一個(gè)開(kāi)源的 Python 算法庫(kù)和數(shù)學(xué)工具包。SciPy 包含的模塊有最優(yōu)化、線性代數(shù)、積分、插值、特殊函數(shù)、快速傅里葉變換、信號(hào)處理和圖像處理、常微分方程求解和其他科學(xué)與工程中常用的計(jì)算。Matplotlib 是 Python 編程語(yǔ)言及其數(shù)值數(shù)學(xué)擴(kuò)展包 NumPy 的可視化操作界面。它為利用通用的圖形用戶界面工具包。
NumPy 官網(wǎng):http://www.numpy.orgNumPy 源代碼:https://github.com/numpy/numpySciPy 官網(wǎng):: https://www.scipy.orgSciPy 源代碼:: https://github.com/scipy/scipyMatplotlib 源代碼:: https://matplotlib.orgMatplotlib 源代碼:: https://github.com/matplotlib/matplotlib
# 1、安裝包 $ pip install numpy # 2、進(jìn)入python的交互式界面 $ python -i # 3、使用Numpy >>> from numpy import * >>> eye(4) # 4、輸出結(jié)果 array([[1., 0., 0., 0.], [0., 1., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.]])