摘要:一一維數(shù)組的索引與切片對象的內(nèi)容可以通過索引或切片來訪問和修改,與中的切片操作一樣。在指定位置分裂數(shù)組本身作為一個參數(shù),分類位置構(gòu)成的列表作為第二個參數(shù)同時也可以對一維數(shù)組和多位數(shù)組進(jìn)行操作。
1.概述
今天我們來講一下Numpy數(shù)組的索引與切片,numpy數(shù)組的索引與切片和Python中的切片與索引的作用相同,可以快速的取出數(shù)據(jù),進(jìn)行下一步的運(yùn)用或者查看,但是兩種切片還有一些不同的地方。另外我們可以通過數(shù)組的變形拼接分裂快速的對數(shù)組進(jìn)行做出改變,方便我們更快的對數(shù)組進(jìn)行操作。
一、一維數(shù)組的索引與切片
ndarray對象的內(nèi)容可以通過索引或切片來訪問和修改,與 Python 中 list 的切片操作一樣。
ndarray 數(shù)組可以基于 0 - n 的下標(biāo)進(jìn)行索引,切片對象可以通過內(nèi)置的 slice 函數(shù),并設(shè)置 start, stop 及 step 參數(shù)進(jìn)行,從原數(shù)組中切割出一個新數(shù)組。
索引方式:
X[index_value]
切片方式:
X[start:stop:step]
首先創(chuàng)建一個數(shù)組
對數(shù)組進(jìn)行索引,找到索引為2和6的元素
對數(shù)組進(jìn)切片,查找從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]]
可以不指定步長,會默認(rèn)為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ù)字對行列同時進(jìn)行索引的而不是索引單個值的話,應(yīng)當(dāng)使用下面的方式:
也可以利用數(shù)字索引生成同樣維度的數(shù)組:
2.布爾索引
當(dāng)結(jié)果對象是布爾運(yùn)算(例如比較運(yùn)算符)的結(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 列表中,切片是值的副本。
對于切片出來的視圖或視圖中索引出來的元素(其實也是一個視圖)進(jìn)行修改時,原始數(shù)據(jù)也會被改變。因此我們想要保護(hù)原始數(shù)據(jù),應(yīng)該先創(chuàng)建副本,在副本上進(jìn)行操作,以保證原始數(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ù)組進(jìn)行操作時,這時候就需要拼接數(shù)組了,numpy提供了對數(shù)組進(jìn)行拼接的方法
2.1 np.concatanate()
數(shù)組本身構(gòu)成的列表作為np.concatenate()的參數(shù)之一,還有一個常用的參數(shù)是axis,用來指定拼接的方向:
axis = 0 按行拼接
axis = 1 按列拼接
默認(rèn)的參數(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ù)組進(jìn)行分裂,numpy同時也提供了數(shù)組分裂的方法。
3.1 np.split()
在指定位置分裂,數(shù)組本身作為一個參數(shù),分類位置構(gòu)成的列表作為第二個參數(shù),同時split也可以對一維數(shù)組和多位數(shù)組進(jìn)行操作。
一維數(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://systransis.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...
摘要:有三種可用的索引字段訪問,基本切片,高級索引。基本切片和索引基本切片將的切片基本概念擴(kuò)展到維?;厩衅傻乃袛?shù)組始終是原始數(shù)組的視圖。序列切片的標(biāo)準(zhǔn)規(guī)則適用于基于每維的基本切片包括使用步驟索引。因此,在基本切片下的行為。 https://docs.scipy.org/doc/nu... 索引 ndarrays可以使用標(biāo)準(zhǔn)Python x[obj]語法對其進(jìn)行索引 ,其中x是數(shù)組,o...
摘要:注意和標(biāo)準(zhǔn)庫類并不相同,后者只處理一維數(shù)組和提供少量功能。然而,指定參數(shù)你可以吧運(yùn)算應(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é)碼并不難,而且它對我們了解代碼背后的運(yùn)行機(jī)制很有幫助。 《流暢的Python》筆記。接下來的三篇都是關(guān)于Python的數(shù)據(jù)結(jié)構(gòu),本篇主要是Python中的各序列類型 1. 內(nèi)置序列類型概覽 Python標(biāo)準(zhǔn)庫...
閱讀 2252·2021-11-22 09:34
閱讀 1371·2021-10-11 10:59
閱讀 4474·2021-09-22 15:56
閱讀 3364·2021-09-22 15:08
閱讀 3434·2019-08-30 14:01
閱讀 806·2019-08-30 11:16
閱讀 1151·2019-08-26 13:51
閱讀 2933·2019-08-26 13:43