摘要:一一維數(shù)組的索引與切片對象的內(nèi)容可以通過索引或切片來訪問和修改,與中的切片操作一樣。在指定位置分裂數(shù)組本身作為一個參數(shù),分類位置構(gòu)成的列表作為第二個參數(shù)同時也可以對一維數(shù)組和多位數(shù)組進行操作。
1.概述
今天我們來講一下Numpy數(shù)組的索引與切片,numpy數(shù)組的索引與切片和Python中的切片與索引的作用相同,可以快速的取出數(shù)據(jù),進行下一步的運用或者查看,但是兩種切片還有一些不同的地方。另外我們可以通過數(shù)組的變形拼接分裂快速的對數(shù)組進行做出改變,方便我們更快的對數(shù)組進行操作。
一、一維數(shù)組的索引與切片
ndarray對象的內(nèi)容可以通過索引或切片來訪問和修改,與 Python 中 list 的切片操作一樣。
ndarray 數(shù)組可以基于 0 - n 的下標(biāo)進行索引,切片對象可以通過內(nèi)置的 slice 函數(shù),并設(shè)置 start, stop 及 step 參數(shù)進行,從原數(shù)組中切割出一個新數(shù)組。
索引方式:
X[index_value]
切片方式:
X[start:stop:step]
首先創(chuàng)建一個數(shù)組
對數(shù)組進行索引,找到索引為2和6的元素
對數(shù)組進切片,查找從2開始到8結(jié)束,步長為2的元素。
需要注意的是,切片的結(jié)果會產(chǎn)生新的內(nèi)存地址,如果要引用切片值,需要賦值給新的變量。
二、高維數(shù)組索引&切片
與Python原生的列表、元組不同的是,Numpy數(shù)組支持多維數(shù)組的多維索引,每一個逗號, 代表索引的一個維度
索引方法:
x[維度,行,列]
x維度[列]
二維和一維數(shù)組可以不指定維度
切片方法:
x[維度的[start:stop:step],行的[start:stop:step],列的[start:stop:step]]
可以不指定步長,會默認為1
首先設(shè)置兩個多維數(shù)組
1、索引
1.1索引出x1中第1行第1列的元素
1.2 索引出x2中第1個維度的第1行第1列的元素
2、切片
設(shè)置一個5維5行5列的np數(shù)組
2.1 切片出第二個維度中的第三行數(shù)據(jù)
2.2 切片出第三個維度中的第二行的第三個元素
2.3 切片出第二個維度中的第一行和第三行的第四個元素
切片出前兩個維度的第一行和第三行的前兩列
三、修改元素值
1、修改某一個元素
1.1設(shè)置一個數(shù)組
1.2轉(zhuǎn)換數(shù)據(jù)類型為浮點型
1.3將f1中的第三個元素改為3.14
2、修改數(shù)組中的多個元素
2.1將x3的前三個模塊的第3行的第4列的元素改為2333
四、其它索引方式
1、整數(shù)索引
如果一個 ndarray 是非元組序列,數(shù)據(jù)類型為整數(shù)或布爾值的 ndarray,或者至少一個元素為序列對象的元組,我們就能夠用它來索引 ndarray。高級索引始終返回數(shù)據(jù)的副本。與此相反,切片只提供了一個視圖。
整數(shù)索引就是兩種高級索引的類型之一,另一個高級索引方式為 布爾值索引。
整數(shù)索引有助于基于 N 維索引來獲取數(shù)組中任意元素。每個整數(shù)數(shù)組表示該維度的下標(biāo)值。當(dāng)索引的元素個數(shù)就是目標(biāo) ndarray 的維度時,會變得相當(dāng)直接。以下示例獲取了 ndarray 對象中每一行指定列的一個元素。因此,行索引包含所有行號,列索引指定要選擇的元素。
該結(jié)果包括數(shù)組中 (0,0) ,(1,1) 和 (2,0) 位置處的元素。
但如果需要的是按數(shù)字對行列同時進行索引的而不是索引單個值的話,應(yīng)當(dāng)使用下面的方式:
也可以利用數(shù)字索引生成同樣維度的數(shù)組:
2.布爾索引
當(dāng)結(jié)果對象是布爾運算(例如比較運算符)的結(jié)果時,將使用此類型的高級索引。
2.1設(shè)置一個4行3列的數(shù)組
2.2查看數(shù)組中大于5的元素
2.3 將數(shù)組中大于5的元素索引出來
五、關(guān)于視圖
關(guān)于數(shù)組切片有一點很重要也非常有用,那就是數(shù)組切片返回的是數(shù)組數(shù)據(jù)的視圖,而不是數(shù)值數(shù)據(jù)的副本。這一點也是 NumPy 數(shù) 組切片和 Python 列表切片的不同之處:在 Python 列表中,切片是值的副本。
對于切片出來的視圖或視圖中索引出來的元素(其實也是一個視圖)進行修改時,原始數(shù)據(jù)也會被改變。因此我們想要保護原始數(shù)據(jù),應(yīng)該先創(chuàng)建副本,在副本上進行操作,以保證原始數(shù)據(jù)不被修改。
六、數(shù)組的變形拼接分裂
1、數(shù)組的變形
1.1 np.reshape()不改變數(shù)據(jù)的條件下修改形狀
示例:將一個一維數(shù)組變成3*4數(shù)組
需要注意的是:變換形狀之后的數(shù)組大小必須和原始數(shù)組相同
Xx1的數(shù)組的長度為10,無法變形為3行4列的數(shù)組,這時候就會報錯,reshape()還有一個功能,就是幫我們回去行向量和列變量。
在使用reshape()的時候,可以將其中一個維度指定為-1,這樣numpy就會自動計算出它的真實值。
1.2 np.newaxis 和reshape()方法獲取行向量和列向量功能一樣,np.newaxis方法也可以幫我們獲取行向量與列向量
行向量:
列向量
Np.newaxis()比np.reshape()更高級的是:np.newaxis是和索引切片方法一起使用的,可以制定獲取行列向量的長度,即先切片在轉(zhuǎn)換成行向量或列向量
2、數(shù)組的拼接
當(dāng)我們需要對多個數(shù)組進行操作時,這時候就需要拼接數(shù)組了,numpy提供了對數(shù)組進行拼接的方法
2.1 np.concatanate()
數(shù)組本身構(gòu)成的列表作為np.concatenate()的參數(shù)之一,還有一個常用的參數(shù)是axis,用來指定拼接的方向:
axis = 0 按行拼接
axis = 1 按列拼接
默認的參數(shù)為axis = 0
按行拼接(橫向拼接)
按列拼接(縱向拼接)
2.2np.vstack()
垂直棧拼接,按行拼接,數(shù)組本身構(gòu)成的列表作為np.vstack()的參數(shù)
2.3 np.hstack()
平行棧,按列拼接,數(shù)組本身構(gòu)成的列表作為np.hstack()的參數(shù)
2.4 np.dstack()
第三維度拼接,數(shù)組本身構(gòu)成的列表作為np.dstack()的參數(shù)
3、數(shù)組的分裂
同數(shù)組的拼接一樣,在處理多個數(shù)組時,也需要將數(shù)組進行分裂,numpy同時也提供了數(shù)組分裂的方法。
3.1 np.split()
在指定位置分裂,數(shù)組本身作為一個參數(shù),分類位置構(gòu)成的列表作為第二個參數(shù),同時split也可以對一維數(shù)組和多位數(shù)組進行操作。
一維數(shù)組/行向量/列向量
多維數(shù)組
3.2 np.hsplit()
按列在指定位置分裂
3.3 np.vsplit()
按行在指定位置分裂
4.數(shù)組的平鋪
數(shù)據(jù)可以通過np.ravel()方法將多維的數(shù)組平鋪成一維的數(shù)組。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/43607.html
摘要:發(fā)生這個異常的原因就是因為在調(diào)用函數(shù)時,中的已經(jīng)不再指向?qū)ο蠖侵赶蛄巳謱ο?,由于下并沒有屬性,所以輸出。在為綁定的上下文環(huán)境之后,并不會立即執(zhí)行。方法用于檢查數(shù)組中的是否存在符合條件的項,存在則返回否則返回。 寫作意圖 這篇文章用于總結(jié)一些javascript語言中常見的易混淆點。 call | apply | bind 在js中,最詭異莫測的莫過于this了,理解的不夠深入或是應(yīng)...
目錄Numpy簡介Numpy操作集合1、不同維度數(shù)據(jù)的表示1.1 一維數(shù)據(jù)的表示1.2 二維數(shù)據(jù)的表示1.3 三維數(shù)據(jù)的表示2、 為什么要使用Numpy2.1、Numpy的ndarray具有廣播功能2.2 Numpy數(shù)組的性能比Python原生數(shù)據(jù)類型高3 ndarray的屬性和基本操作3.1 ndarray的基本屬性3.2 ndarray元素類型3.3 創(chuàng)建ndarray的方式3.4 ndarr...
摘要:有三種可用的索引字段訪問,基本切片,高級索引。基本切片和索引基本切片將的切片基本概念擴展到維。基本切片生成的所有數(shù)組始終是原始數(shù)組的視圖。序列切片的標(biāo)準規(guī)則適用于基于每維的基本切片包括使用步驟索引。因此,在基本切片下的行為。 https://docs.scipy.org/doc/nu... 索引 ndarrays可以使用標(biāo)準Python x[obj]語法對其進行索引 ,其中x是數(shù)組,o...
摘要:注意和標(biāo)準庫類并不相同,后者只處理一維數(shù)組和提供少量功能。然而,指定參數(shù)你可以吧運算應(yīng)用到數(shù)組指定的軸上通用函數(shù)提供常見的數(shù)學(xué)函數(shù)如和。在中,這些叫作通用函數(shù)。函數(shù),另一方面,將一維數(shù)組以行組合成二維數(shù)組。 原文:Quickstart tutorial 譯者:Reverland 來源:試驗性NumPy教程(譯) 2.1 先決條件 在閱讀這個教程之前,你多少需要知道點python。如...
摘要:第行把具名元組以的形式返回。對序列使用和通常號兩側(cè)的序列由相同類型的數(shù)據(jù)所構(gòu)成當(dāng)然不同類型的也可以相加,返回一個新序列。從上面的結(jié)果可以看出,它雖拋出了異常,但仍完成了操作查看字節(jié)碼并不難,而且它對我們了解代碼背后的運行機制很有幫助。 《流暢的Python》筆記。接下來的三篇都是關(guān)于Python的數(shù)據(jù)結(jié)構(gòu),本篇主要是Python中的各序列類型 1. 內(nèi)置序列類型概覽 Python標(biāo)準庫...
閱讀 2277·2021-11-22 09:34
閱讀 1411·2021-10-11 10:59
閱讀 4524·2021-09-22 15:56
閱讀 3427·2021-09-22 15:08
閱讀 3470·2019-08-30 14:01
閱讀 851·2019-08-30 11:16
閱讀 1181·2019-08-26 13:51
閱讀 2968·2019-08-26 13:43