溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

numpy數(shù)組不同索引方式有什么區(qū)別

發(fā)布時(shí)間:2022-02-25 16:17:22 來(lái)源:億速云 閱讀:107 作者:iii 欄目:web開發(fā)

這篇“numpy數(shù)組不同索引方式有什么區(qū)別”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“numpy數(shù)組不同索引方式有什么區(qū)別”文章吧。

numpy數(shù)組一般有三種索引方式:

基礎(chǔ)索引與切片

布爾索引

神奇索引

三種方法都可截取原數(shù)組中的部分?jǐn)?shù)據(jù),但是使用的時(shí)候在本質(zhì)上卻有區(qū)別,尤其是在處理大量數(shù)據(jù)時(shí),不弄清索引本質(zhì),會(huì)導(dǎo)致最后預(yù)測(cè)結(jié)果不準(zhǔn)確。

基礎(chǔ)索引與切片

先上代碼:

import numpy as np

arr = np.arange(25).reshape(5,5)

arr

arr1 = arr[:3]

arr1

arr1[1] = -1

arr

大家可以從上面的結(jié)果中發(fā)現(xiàn),將arr前3行賦值給arr1,然后將arr1的第2行的數(shù)值改為-1,最后arr也發(fā)生了改變。原因是在基礎(chǔ)索引中,返回的只是原數(shù)組的視圖,而不是復(fù)制原數(shù)組,任何對(duì)于視圖的修改,都會(huì)影響原數(shù)組。

解決方法,利用ndarray自帶方法copy(),復(fù)制原數(shù)組。

arr = np.arange(25).reshape(5,5)

arr

arr1 = arr.copy()

arr1[1]=-1

arr

布爾索引

先上代碼:

bool_ = [True,False,True,False,False]

arr1 = arr[bool_]

arr1

arr1[1]=-1

arr

可以發(fā)現(xiàn),布爾索引并未出現(xiàn)類似問題,因?yàn)槔貌紶栔邓饕龝r(shí),總是生成數(shù)據(jù)的拷貝,所以改變選擇數(shù)據(jù),對(duì)原數(shù)組沒有影響。

神奇索引

index = [3,4,1,2]

arr1 = arr[index]

arr1

arr1[1]=-1

arr

神奇索引和布爾索引一樣,選擇數(shù)據(jù)的改變也不會(huì)影響原數(shù)組。

以上就是關(guān)于“numpy數(shù)組不同索引方式有什么區(qū)別”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI