版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
NumPy常用操作實(shí)驗(yàn)七課程學(xué)習(xí)目標(biāo)了解NumPy的創(chuàng)建、索引及廣播機(jī)制數(shù)組元素操作在Python中,最基本的數(shù)據(jù)結(jié)構(gòu)是序列,它包含六種內(nèi)建序列,即字符串、列表、元組、Unicode字符串、buffer對(duì)象、xrange對(duì)象。序列中的每個(gè)元素都要有一個(gè)唯一的編號(hào)作為他們的“標(biāo)識(shí)”,這個(gè)編號(hào)被稱(chēng)為索引,在使用時(shí),可以通過(guò)索引取到序列的值,語(yǔ)法為序列[索引],這里需要注意的是序列中的索引是從0開(kāi)始編號(hào)的。切片(slicing)是一種從數(shù)組中提取元素子集的方式,其語(yǔ)法類(lèi)似于Python列表的切片。所以有一個(gè)概念為切片(slice),顧名思義,就是“切下來(lái)一個(gè)連續(xù)的片區(qū)”,切片是對(duì)序列的一種高級(jí)索引方法,和前面講到的普通索引的區(qū)別在于普通索引只取出序列中一個(gè)下標(biāo)對(duì)應(yīng)的元素,而切片取出序列中一個(gè)范圍中對(duì)應(yīng)的元素。數(shù)組元素操作普通索引數(shù)組元素操作切片索引切片索引切片是通過(guò)內(nèi)置的slice函數(shù),并設(shè)置start,stop及step參數(shù)進(jìn)行,從原數(shù)組中切割出一個(gè)新數(shù)組,本質(zhì)上是通過(guò)切片來(lái)實(shí)現(xiàn)索引。新生成索引數(shù)組切片例7.1通過(guò)slice函數(shù)進(jìn)行切片。importnumpyasnpa=np.array([1,3,5,7,9,11,13,15,17,18,19])
s=slice(2,8,2)
print(a[s])slice(2,8,2)的含義是從2開(kāi)始,到7,步長(zhǎng)為2因而也就得到2,4,6,通過(guò)slice得到需要的下標(biāo)索引,進(jìn)而通過(guò)索引得到對(duì)應(yīng)的元素。因?yàn)樾蛄兄械乃饕菑?開(kāi)始編號(hào)的,所以在變量a中,索引為2的元素是5,索引為4的元素是9,索引為6的元素是13。切片索引序列[start:end:step]直接在原數(shù)組上通過(guò)索引切片例7.2通過(guò)冒號(hào)對(duì)數(shù)組進(jìn)行切片。importnumpyasnpa=np.array([1,3,5,7,9,11,13,15,17,18,19])
b=a[2:8:2]
print(b)a[2:8:2]的含義為從2開(kāi)始,到7,步長(zhǎng)為2因而也就得到2,4,6,在變量a中,索引為2的元素是5,索引為4的元素是9,索引為6的元素是13。使用這種方法表達(dá)時(shí),冒號(hào)里面的某些參數(shù)可以省略,具體省略規(guī)則如下。如果只放置一個(gè)參數(shù),如[2],將返回與該索引相對(duì)應(yīng)的單個(gè)元素;如果只放置一個(gè)參數(shù)加冒號(hào),如[2:],表示從該索引開(kāi)始以后,默認(rèn)步長(zhǎng)1,即該項(xiàng)以后的所有項(xiàng)都將被提取,同樣如果冒號(hào)在前,如[:6],表示從該索引開(kāi)始往前,默認(rèn)步長(zhǎng)為1,即該項(xiàng)前端所有項(xiàng)都將被提??;如果使用了兩個(gè)參數(shù),如[2:6],則提取兩個(gè)索引之間的項(xiàng)。上述表示的是一維數(shù)組的切片,那么在二維數(shù)組上是否也同樣適用呢?切片索引例7.3通過(guò)冒號(hào)對(duì)數(shù)組進(jìn)行切片。importnumpyasnpa=np.array([[1,2,3],[3,4,5],[4,5,6]])
print(a)
#從某個(gè)索引處開(kāi)始切割
print('從數(shù)組索引a[1:]處開(kāi)始切割')
print(a[1:])
在多維數(shù)組中,冒號(hào)切片同樣適用,例子中的[1:]表示數(shù)組[1,2,3]整體的后面的所有數(shù)據(jù)。直接在原數(shù)組上通過(guò)索引切片切片索引例7.4通過(guò)冒號(hào)對(duì)數(shù)組進(jìn)行切片。importnumpyasnpa=np.array([[1,2,3],[3,4,5],[4,5,6]])
print("第2列元素")
(a[...,1])
#第2列元素
print("第2行元素")
(a[1,...])
#第2行元素
print("第2列及右邊的所有元素")
(a[...,1:])
#第2列及右邊的所有元素通過(guò)這幾個(gè)例子,可以總結(jié)出使用省略號(hào)的場(chǎng)景:多維數(shù)組切片可以通過(guò)省略號(hào)來(lái)進(jìn)行,省略號(hào)意味著所有的意思,通過(guò)這種操作可以獲得列。以二維數(shù)組為例,索引的第一個(gè)數(shù)字代表行,第二個(gè)數(shù)字代表列,則[...,1]中,行索引由...代替,即所有行的意思,列數(shù)為1,即第二列,所以這個(gè)的意思代表第2列的所有元素。直接在原數(shù)組上通過(guò)索引切片高級(jí)索引例7.5使用整型數(shù)組索引。整型數(shù)組索引索引一般包含兩個(gè)列表,第一個(gè)列表代表行,第二個(gè)列表代表列,一一對(duì)應(yīng)。importnumpyasnpx=np.array([[1,
2],
[3,
4],
[5,
6]])
y=x[[0,1,2],
[0,1,0]]
(x)
(y)
在x中,[0,0]位置的元素為1,[1,1]位置的元素為4,[2,0]位置的元素為5,與程序執(zhí)行結(jié)果相對(duì)應(yīng)。高級(jí)索引例7.6使用布爾索引。importnumpyasnpx=np.array([[
0,
1,
2],[
3,
4,
5],[
6,
7,
8],[
9,
10,
11]])
('我們的數(shù)組是:')
(x)
('\n')
('大于3的元素是:')
(x[x>
3])
布爾索引布爾索引相當(dāng)于可以加一個(gè)篩選條件,從而篩選想要的元素。廣播機(jī)制廣播(Broadcast)是NumPy對(duì)不同形狀(shape)的數(shù)組進(jìn)行數(shù)值計(jì)算的方式,對(duì)數(shù)組的算術(shù)運(yùn)算通常在相應(yīng)的元素上進(jìn)行。如果兩個(gè)數(shù)組a和b形狀相同,即滿(mǎn)足a.shape==b.shape,那么a*b的結(jié)果就是a與b數(shù)組對(duì)應(yīng)位相乘,這就要求數(shù)組維數(shù)相同且各維度的長(zhǎng)度相同。廣播機(jī)制例7.7創(chuàng)建兩個(gè)一維數(shù)組,將其相乘。importnumpyasnpa=np.array([1,2,3,4])b=np.array([10,20,30,40])c=a*bprint(c)但是如果兩個(gè)形狀不同的數(shù)組怎么做運(yùn)算呢?在NumPy中,為了保持?jǐn)?shù)組形狀相同,它設(shè)計(jì)了一種廣播機(jī)制,這個(gè)機(jī)制的核心是對(duì)形狀較小的數(shù)組在橫向或縱向上進(jìn)行一定次數(shù)的重復(fù),使其與形狀較大的一方數(shù)組擁有相同的維度。廣播機(jī)制例7.8創(chuàng)建兩個(gè)數(shù)組,將其相加。importnumpyasnpa=np.array([[0,0,0],
[1,1,1],
[2,2,2],
[3,3,3]])b=np.array([0,1,2])print(a+b)發(fā)現(xiàn)數(shù)組b在數(shù)組a的每一維上面都進(jìn)行了相加操作。b數(shù)組如何通過(guò)廣播做到與數(shù)組a保持同一維度?廣播機(jī)制觀察這個(gè)圖,發(fā)現(xiàn)4×3的數(shù)組與1×3的數(shù)組進(jìn)行相加操作,等于將數(shù)組b在二維上重復(fù)四次后再進(jìn)行運(yùn)算。總結(jié)廣播的規(guī)則:規(guī)則一:如果兩個(gè)數(shù)組在維度上不匹配,那么數(shù)組的形狀會(huì)沿著長(zhǎng)度為1的維度進(jìn)行擴(kuò)展以匹配另一個(gè)數(shù)組的形狀。規(guī)則二:如果兩個(gè)數(shù)組在任何維度上的大小不一致,并且其中一個(gè)數(shù)組在該維度上的大小為1,則這個(gè)數(shù)組看起來(lái)會(huì)被復(fù)制擴(kuò)展到與另一個(gè)數(shù)組相同的大小。規(guī)則三:如果在所有維度上大小都不匹配,并且沒(méi)有任何一個(gè)維度等于1,則會(huì)引發(fā)錯(cuò)誤。廣播機(jī)制例7.9創(chuàng)建一個(gè)2行3列的數(shù)組M和1行3列的數(shù)組N并將M和N相加。importnumpyasnp#創(chuàng)建一個(gè)形狀為(2,3)的二維數(shù)組M,所有元素初始化為1M=np.ones((2,3))print(M)#創(chuàng)建一個(gè)一維數(shù)組N,包含0到2的整數(shù),形狀為(3,)N=np.arange(3)print(N)#打印數(shù)組M和數(shù)組N的形狀print(M.shape)print(N.shape)#將數(shù)組M和數(shù)組N相加M+NNumPy元素的基本操作例7.10對(duì)NumPy數(shù)組進(jìn)行四則運(yùn)算。importnumpyasnpa=np.array([1,
2,
3])
b=np.array([4,
5,
6])
#加法
c=a+b#減法
d=a-b#乘法
e=a*b#除法
f=a/bprint(c)print(d)print(e)print(f)四則運(yùn)算在NumPy數(shù)組中,可以使用基本的算術(shù)運(yùn)算符(+,-,*,/)對(duì)它進(jìn)行元素級(jí)運(yùn)算。NumPy元素的基本操作例7.11使用**運(yùn)算符進(jìn)行冪運(yùn)算,使用np.sqrt()函數(shù)計(jì)算平方根。importnumpyasnp#冪運(yùn)算
g=a**
2#開(kāi)方
h=np.sqrt(a)
print(g)print(h)冪運(yùn)算和開(kāi)方NumPy元素的基本操作例7.12對(duì)NumPy數(shù)組進(jìn)行比較操作。importnumpyasnpa=np.array([1,
2,
3])
b=np.array([4,
5,
6])
#加法
c=a+b#減法
d=a-b#乘法
e=a*b#除法
f=a/bk=a<bprint(k)邏輯運(yùn)算NumPy元素的基本操作例7.13對(duì)NumPy數(shù)組進(jìn)行三角函數(shù)運(yùn)算。importnumpyasnp#將數(shù)組中的每個(gè)元素視為弧度值,并計(jì)算其正弦值
radians=np.array([0,np.pi/2,np.pi])
sine_values=np.sin(radians)print(sine_values)三角函數(shù)在NumPy中,提供了各種三角函數(shù),如np.sin(),np.cos(),np.tan()等。NumPy元素的基本操作例7.14使用np.where()函數(shù)根據(jù)條件選擇數(shù)組中的元素。importnumpyasnpa=np.array([1,
2,
3])
#根據(jù)條件選擇元素值
condition=a>
2
#如果a中的元素大于2
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年蒙城縣縣直幼兒園面向農(nóng)村學(xué)校公開(kāi)選調(diào)教師55人考試備考題庫(kù)及答案解析
- 中學(xué)生安全教育(3篇)
- 2026北京大學(xué)光華管理學(xué)院招聘勞動(dòng)合同制工作人員1人筆試模擬試題及答案解析
- 2026重慶城口縣公安局輔警崗招聘30人筆試備考試題及答案解析
- 工會(huì)經(jīng)費(fèi)審查臺(tái)賬
- 2026貴州產(chǎn)業(yè)技術(shù)發(fā)展研究院招聘2人考試備考試題及答案解析
- 2026湖南長(zhǎng)沙市雨花區(qū)長(zhǎng)塘里第三小學(xué)春季合同制教師招聘筆試參考題庫(kù)及答案解析
- 2026貴州經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院招聘15人考試備考試題及答案解析
- 2025上海復(fù)旦大學(xué)科學(xué)技術(shù)研究院招聘產(chǎn)學(xué)研合作專(zhuān)員崗位1名備考題庫(kù)完整答案詳解
- 2026廣東珠海高新技術(shù)產(chǎn)業(yè)開(kāi)發(fā)區(qū)黨政辦公室(區(qū)機(jī)關(guān)事務(wù)管理局)招聘合同制職員2人備考題庫(kù)及答案詳解(奪冠系列)
- 500萬(wàn)的咨詢(xún)合同范本
- 七年級(jí)語(yǔ)文文言文閱讀理解專(zhuān)項(xiàng)訓(xùn)練
- 中藥熱熨敷技術(shù)及操作流程圖
- 臨床提高吸入劑使用正確率品管圈成果匯報(bào)
- 娛樂(lè)場(chǎng)所安全管理規(guī)定與措施
- 電影項(xiàng)目可行性分析報(bào)告(模板參考范文)
- 老年協(xié)會(huì)會(huì)員管理制度
- LLJ-4A車(chē)輪第四種檢查器
- 大索道竣工結(jié)算決算復(fù)審報(bào)告審核報(bào)告模板
- 2025年南充市中考理科綜合試卷真題(含標(biāo)準(zhǔn)答案)
- 人衛(wèi)基礎(chǔ)護(hù)理學(xué)第七版試題及答案
評(píng)論
0/150
提交評(píng)論