- 數(shù)據(jù)科學(xué)技術(shù)與應(yīng)用
- 宋暉
- 1517字
- 2020-06-08 17:38:16
2.2 多維數(shù)組運(yùn)算
利用NumPy庫(kù)的ndarray多維數(shù)組進(jìn)行科學(xué)計(jì)算和數(shù)據(jù)處理時(shí),不需要使用單層和多層循環(huán)語(yǔ)句,即可對(duì)一個(gè)或多個(gè)數(shù)組中的元素進(jìn)行常用的計(jì)算和操作。便捷的運(yùn)算模式可以讓使用者只需關(guān)注計(jì)算和數(shù)據(jù)分析本身的邏輯,避免編程語(yǔ)言底層實(shí)現(xiàn)細(xì)節(jié)帶來(lái)的困擾。
2.2.1 基本算術(shù)運(yùn)算
1.二維數(shù)組與標(biāo)量運(yùn)算
【例2-3】 為所有學(xué)生的所有課程成績(jī)?cè)黾?分。

Python內(nèi)部實(shí)現(xiàn)數(shù)組與標(biāo)量相加時(shí),使用“廣播機(jī)制”首先將標(biāo)量5轉(zhuǎn)換為元素值為5的5×7二維數(shù)組,然后再將scores和新生成的數(shù)組按位相加,等價(jià)于以下代碼。

2.二維數(shù)組與一維數(shù)組運(yùn)算
【例2-4】 每個(gè)科目基礎(chǔ)分不同,為各科目成績(jī)?cè)黾酉鄳?yīng)的基礎(chǔ)分。
首先創(chuàng)建一維數(shù)組存放不同科目增加的分?jǐn)?shù),然后將其和scores相加。

上面的加法操作同樣也用到了廣播機(jī)制,NumPy首先將一維數(shù)組bonus變成每列值相同的5×7二維數(shù)組,然后再和scores相加。
3.選定元素運(yùn)算
如果需要對(duì)數(shù)組特定元素進(jìn)行運(yùn)算,可以先使用2.1節(jié)介紹的數(shù)據(jù)切片操作,得到特定元素,然后對(duì)其進(jìn)行計(jì)算。如給“肖良英”的“English”加5分。

Python支持的常見(jiàn)算術(shù)運(yùn)算,如“+”、“-”、“*”、“/”、“**”(平方)等都可以在多維數(shù)組上直接使用。
2.2.2 函數(shù)和矩陣運(yùn)算
NumPy庫(kù)支持ndarray元素級(jí)的通用函數(shù)和用于行、列或整個(gè)數(shù)組計(jì)算的聚集函數(shù)。另外,ndarray多維數(shù)組還支持常見(jiàn)的矩陣和矢量運(yùn)算。
1.通用函數(shù)(ufunc)
通用函數(shù)有一元函數(shù)和二元函數(shù),分別接收一個(gè)和兩個(gè)輸入數(shù)組,返回一個(gè)數(shù)組。常用的一元函數(shù)和二元函數(shù)如表2-2和表2-3所示。
表2-2 常用的一元函數(shù)

表2-3 常用的二元函數(shù)

【例2-5】 將學(xué)生的考試成績(jī)轉(zhuǎn)換成整數(shù)形式的十分制分?jǐn)?shù)。

【例2-6】 使用subtract()函數(shù)為每個(gè)學(xué)生的分?jǐn)?shù)減去3分。

NumPy使用廣播機(jī)制把標(biāo)量數(shù)據(jù)3變成了多維數(shù)組,然后和scores數(shù)組的各元素進(jìn)行減法操作。
2.聚集函數(shù)
ndarray數(shù)組支持在行、列或數(shù)組全體元素上的聚集函數(shù),可以求平均值、最大值、最小值、累加和等。常用的聚集函數(shù)如表2-4所示。
表2-4 常用的聚集函數(shù)

對(duì)于二維數(shù)組對(duì)象,可以指定聚集函數(shù)是在行上操作還是在列上操作。當(dāng)參數(shù)axis為0時(shí),函數(shù)操作的對(duì)象是同一列不同行的數(shù)組元素;當(dāng)參數(shù)axis為1時(shí),函數(shù)操作的對(duì)象是同一行不同列的數(shù)組元素。
【例2-7】 按照分析目標(biāo)使用聚集函數(shù)進(jìn)行統(tǒng)計(jì)。
1)統(tǒng)計(jì)不同科目的成績(jī)總分。

2)求“王微”所有課程成績(jī)的平均分。

首先利用布爾型數(shù)組選擇“王微”的所有成績(jī),然后使用求平均值函數(shù)mean()。
3)查詢(xún)英語(yǔ)考試成績(jī)最高的學(xué)生的姓名。

argmax()函數(shù)能返回特定元素的下標(biāo)。首先通過(guò)列篩選得到由所有學(xué)生英語(yǔ)成績(jī)組成的一維數(shù)組,接著通過(guò)argmax()函數(shù)返回一維數(shù)組中最高分的索引值,最后利用該索引值在names數(shù)組中查找到該學(xué)生的姓名。
2.2.3 隨機(jī)數(shù)組生成函數(shù)
NumPy庫(kù)的random模塊補(bǔ)充了Python的隨機(jī)數(shù)生成函數(shù),可以高效地生成服從多種概率分布的隨機(jī)樣本。常用函數(shù)如表2-5所示。
表2-5 常用函數(shù)

這些函數(shù)均可以使用元組給定生成數(shù)組的維度。
【例2-8】 生成由10個(gè)隨機(jī)整數(shù)組成的一維數(shù)組,整數(shù)的取值范圍為0~5。

randint(start, end, size),生成元素值從start到end-1范圍內(nèi)的整數(shù)數(shù)組,數(shù)組的大小由參數(shù)size對(duì)應(yīng)的元組給出。數(shù)組的元素值隨機(jī)生成,start到end-1范圍內(nèi)各整數(shù)出現(xiàn)的概率相等。
生成5×6的二維隨機(jī)整數(shù),隨機(jī)數(shù)的取值是0或1。

正態(tài)分布(Normal Distribution)又稱(chēng)高斯分布,是一個(gè)在數(shù)學(xué)、物理及工程等領(lǐng)域都非常重要的概率分布,對(duì)統(tǒng)計(jì)學(xué)尤為重要。正態(tài)曲線呈鐘形,兩頭低、中間高,如圖2-1所示,因此又稱(chēng)為鐘形曲線。

圖2-1 高斯分布概率密度圖
正態(tài)分布概率密度由期望和方差兩個(gè)統(tǒng)計(jì)量決定,normal函數(shù)可以模擬生成服從正態(tài)分布的一組數(shù)據(jù)。
【例2-9】 生成均值為0、方差為1服從正態(tài)分布的4×5二維數(shù)組。

思考與練習(xí)
1.將scores數(shù)組中所有學(xué)生的英語(yǔ)成績(jī)減去3分并顯示。
2.統(tǒng)計(jì)scores數(shù)組中每名學(xué)生所有科目的平均分并顯示。
3.使用隨機(jī)函數(shù)生成[-1,1]之間服從均勻分布的3×4二維數(shù)組,并計(jì)算所有元素的和。
- Multisim & Ultiboard電路設(shè)計(jì)與虛擬仿真
- 基于納米材料的熒光共振能量轉(zhuǎn)移技術(shù)及其應(yīng)用
- 海上貨物運(yùn)輸與運(yùn)輸工具保險(xiǎn)
- 戴淑芬《管理學(xué)教程》(第4版)筆記和課后習(xí)題(含考研真題)詳解
- 中國(guó)現(xiàn)當(dāng)代文學(xué)
- 朱紹侯《中國(guó)古代史(下冊(cè))》(第5版)配套題庫(kù)【名校考研真題+章節(jié)題庫(kù)+模擬試題】
- 文化資源概論
- 井壁穩(wěn)定預(yù)測(cè)技術(shù)
- 高分子材料加工原理(第3版)
- George Yule《語(yǔ)言研究》(第4版)課后習(xí)題詳解
- 2019年注冊(cè)城鄉(xiāng)規(guī)劃師《城鄉(xiāng)規(guī)劃管理與法規(guī)》過(guò)關(guān)必做1200題(含歷年真題)
- 物流采購(gòu)管理
- 經(jīng)濟(jì)法教程
- 機(jī)電專(zhuān)業(yè)英語(yǔ)
- 曼昆《經(jīng)濟(jì)學(xué)原理(微觀經(jīng)濟(jì)學(xué)分冊(cè))》(第5版)課后習(xí)題詳解