python中numpy指的是什么

這篇文章將為大家詳細(xì)講解有關(guān)python中numpy指的是什么,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

在岳塘等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需網(wǎng)站開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè)公司,岳塘網(wǎng)站建設(shè)費(fèi)用合理。

NumPy是Python中科學(xué)計(jì)算的基礎(chǔ)包。它是一個(gè)Python庫,提供多維數(shù)組對(duì)象,各種派生對(duì)象(如掩碼數(shù)組和矩陣),以及用于數(shù)組快速操作的各種例程,包括數(shù)學(xué),邏輯,形狀操作,排序,選擇,I / O離散傅立葉變換,基本線性代數(shù),基本統(tǒng)計(jì)運(yùn)算,隨機(jī)模擬等等。

NumPy包的核心是ndarray對(duì)象。這封裝了同構(gòu)數(shù)據(jù)類型的n維數(shù)組,許多操作在編譯代碼中執(zhí)行以提高性能。NumPy數(shù)組和標(biāo)準(zhǔn)Python序列之間有幾個(gè)重要的區(qū)別:

·NumPy數(shù)組在創(chuàng)建時(shí)具有固定大小,與Python列表(可以動(dòng)態(tài)增長)不同。更改ndarray的大小將創(chuàng)建一個(gè)新數(shù)組并刪除原始數(shù)組。

·NumPy數(shù)組中的元素都需要具有相同的數(shù)據(jù)類型,因此在內(nèi)存中的大小相同。例外:可以有(Python,包括NumPy)對(duì)象的數(shù)組,從而允許不同大小的元素的數(shù)組。

·NumPy數(shù)組有助于對(duì)大量數(shù)據(jù)進(jìn)行高級(jí)數(shù)學(xué)和其他類型的操作。通常,與使用Python的內(nèi)置序列相比,這些操作的執(zhí)行效率更高,代碼更少。

·越來越多的基于Python的科學(xué)和數(shù)學(xué)軟件包正在使用NumPy數(shù)組; 雖然這些通常支持Python序列輸入,但它們?cè)谔幚碇皩⑦@些輸入轉(zhuǎn)換為NumPy數(shù)組,并且它們通常輸出NumPy數(shù)組。換句話說,為了有效地使用當(dāng)今大量(甚至大多數(shù))基于Python的科學(xué)/數(shù)學(xué)軟件,只知道如何使用Python的內(nèi)置序列類型是不夠的 - 還需要知道如何使用NumPy數(shù)組。

關(guān)于序列大小和速度的要點(diǎn)在科學(xué)計(jì)算中尤為重要。作為一個(gè)簡(jiǎn)單的例子,考慮將1-D序列中的每個(gè)元素與相同長度的另一個(gè)序列中的相應(yīng)元素相乘的情況。如果數(shù)據(jù)被存儲(chǔ)在兩個(gè)Python列表,a并且b,我們可以遍歷每個(gè)元素:

c = []
for i in range(len(a)):
    c.append(a[i]*b[i])

這產(chǎn)生了正確的答案,但如果a且b每個(gè)包含數(shù)百萬個(gè)數(shù)字,我們將為Python中循環(huán)的低效率付出代價(jià)。我們可以通過寫入在C中更快地完成相同的任務(wù)(為了清楚起見,我們忽略了變量聲明和初始化,內(nèi)存分配等)

for (i = 0;i < rows;i++):{ 
  c [ i ] = a [ i ] * b [ i ]; 
}

這節(jié)省了解釋Python代碼和操作Python對(duì)象所涉及的所有開銷,但代價(jià)是從Python編碼中獲得的好處。此外,所需的編碼工作隨著我們數(shù)據(jù)的維度而增加。例如,在二維數(shù)組的情況下,C代碼(如前所述)擴(kuò)展為

for (i = 0; i < rows; i++): {
  for (j = 0; j < columns; j++): {
    c[i][j] = a[i][j]*b[i][j];
  }
}

NumPy為我們提供了兩全其美:當(dāng)涉及到ndarray時(shí),逐個(gè)元素的操作是“默認(rèn)模式” ,但逐個(gè)元素的操作由預(yù)編譯的C代碼快速執(zhí)行。在NumPy

c = a * b

以近C速度執(zhí)行前面的示例所做的事情,但是我們期望基于Python的代碼具有簡(jiǎn)單性。的確,NumPy成語更簡(jiǎn)單!最后一個(gè)例子說明了NumPy的兩個(gè)特征,它們是它的大部分功能的基礎(chǔ):矢量化和廣播。

Vectorization描述了代碼中沒有任何顯式循環(huán),索引等 - 這些事情當(dāng)然只是在優(yōu)化的,預(yù)編譯的C代碼中“幕后”。矢量化代碼有許多優(yōu)點(diǎn),其中包括:

·矢量化代碼更簡(jiǎn)潔,更易于閱讀

·更少的代碼行通常意味著更少的錯(cuò)誤

·代碼更接近于標(biāo)準(zhǔn)的數(shù)學(xué)符號(hào)(通常,更容易,正確編碼數(shù)學(xué)結(jié)構(gòu))

·矢量化導(dǎo)致更多“Pythonic”代碼。如果沒有矢量化,我們的代碼就會(huì)被低效且難以閱讀的for循環(huán)所困擾。

廣播是用于描述操作的隱式逐元素行為的術(shù)語;一般來說,在NumPy中,所有操作,不僅僅是算術(shù)運(yùn)算,而是邏輯,位,功能等,都以這種隱式的逐元素方式表現(xiàn),即它們進(jìn)行廣播。此外,在上面的例子中,a并且b可以是相同形狀的多維陣列,或者標(biāo)量和陣列,或者甚至是具有不同形狀的兩個(gè)陣列,條件是較小的陣列可以“擴(kuò)展”到更大的形狀。結(jié)果廣播明確無誤的方式。有關(guān)廣播的詳細(xì)“規(guī)則”,請(qǐng)參閱numpy.doc.broadcasting。

NumPy完全支持面向?qū)ο蟮姆椒?,再次使用ndarray開始。例如,ndarray是一個(gè)類,擁有許多方法和屬性。它的許多方法都在最外層的NumPy命名空間中鏡像函數(shù),使程序員可以完全自由地編寫她喜歡的范例和/或最適合手頭任務(wù)的范例。

關(guān)于python中numpy指的是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)站欄目:python中numpy指的是什么
分享鏈接:http://muchs.cn/article20/jehhjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、ChatGPT、、商城網(wǎng)站網(wǎng)站收錄、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司