您好,登錄后才能下訂單哦!
這篇文章主要介紹“Python Numpy索引及切片的使用方法是什么”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Python Numpy索引及切片的使用方法是什么”文章能幫助大家解決問題。
數組中的元素可以通過索引以及切片的手段進行訪問或者修改,和列表的切片操作一樣。
下面直接使用代碼進行實現,具體操作方式以及意義以代碼注釋為準:
(1)通過下標以及內置函數進行索引切片
""" Author:XiaoMa date:2021/12/30 """ import numpy as np a = np.arange(10)#創建一個從0-9的一維數組 print(a) i = slice(2, 7, 2)#從2開始到7結束,每隔1個元素進行索引,即start為1,stop為7,step為2 print(a[i])
得到的輸出如下:
(2)使用冒號分隔參數進行切片索引
""" Author:XiaoMa date:2021/12/30 """ import numpy as np a = np.arange(10)#創建一個從0-9的一維數組 print(a[2:7:2])#將起始、結束、步長使用冒號進行分割,表示索引切片
得到的輸出如下:
(3)對部分元素進行索引并切片
a. 切取中間的一段
""" Author:XiaoMa date:2021/12/30 """ import numpy as np a = np.arange(10)#創建一個從0-9的一維數組 print(a[2:5])#從2-5進行切片
得到輸出如下:
b. 切取某一個元素后的全部
""" Author:XiaoMa date:2021/12/30 """ import numpy as np a = np.arange(10)#創建一個從0-9的一維數組 print(a[3:])#從3開始進行打印,直到打印完整個數組
得到輸出如下:
(4)對多維數組進行索引切片
""" Author:XiaoMa date:2021/12/30 """ import numpy as np b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print('從數組索引a[2:]處開始切片:') print(b[2:]) print('數組第二列進行切片:') print(b[..., 2]) print('數組第二行進行切片:') print(b[2, ...]) print('從第二列開始切片:') print(b[..., 1:])
得到輸出如下:
(1)整數數組索引
""" Author:XiaoMa date:2021/12/30 """ import numpy as np b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) c = b[[1, 0], [1, 0]] print('對數組(1,1)和(0,0)處的元素進行索引切片:') print(c)
得到輸出如下:
(2)布爾索引
通過一個布爾數組來索引目標數組,布爾數組可以通過布爾運算得到符合條件的數組元素。
如下我們可以提取一個數組中不小于5的數:
""" Author:XiaoMa date:2021/12/30 """ import numpy as np a = np.array([[1, 2, 3, 5], [6, 9, 2, 0], [9, 3, 2, 7]]) print('數組中不小于5的數如下:') print(a[a >= 5])
得到輸出如下:
(3)花式索引
花式索引指的是利用整數數組進行索引。花式索引根據索引數組的值作為目標數組的某個軸的下標來取值。對于使用一維整型數組作為索引,如果目標是一維數組,那么索引的結果就是對應下標的行,如果目標是二維數組,那么就是對應位置的元素。花式索引跟切片不一樣,它總是將數據復制到新數組中。
""" Author:XiaoMa date:2021/12/30 """ import numpy as np x = np.arange(32).reshape((8, 4)) print('生成的數組為:') print(x) print('傳入順序索引數組:') print(x[[4, 2, 1, 7]]) print('傳入倒序索引數組:') print(x[[-4, -2, -1, -1]]) print('傳入多個索引數組:') print(x[np.ix_([1, 5, 7, 2], [0, 3, 1, 2])])#輸出的是兩個向量不同維度組合的值
得到輸出如下:
關于“Python Numpy索引及切片的使用方法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。