ndarray支持在多維數(shù)組上的切片操作。為了方便起見,我們可以用一個省略號(...)來 表示遍歷剩下的維度。 (1)舉例來說,我們先用arange函數(shù)創(chuàng)建一個數(shù)組并改變其維度,使之變成一個三維數(shù)組:
多維數(shù)組b中有0~23的整數(shù),共24個元素,是一個2×3×4的三維數(shù)組。我們可以形象地把它看做一個兩層樓建筑,每層樓有12個房間,并排列成3行4列?;蛘?,我們也可以將其看成是電子表格中工作表(sheet)、行和列的關(guān)系。你可能已經(jīng)猜到,reshape函數(shù)的作用是改變數(shù)組的“形狀”,也就是改變數(shù)組的維度,其參數(shù)為一個正整數(shù)元組,分別指定數(shù)組在每個維度上的大小。如果指定的維度和數(shù)組的元素數(shù)目不相吻合,函數(shù)將拋出異常。 (2)我們可以用三維坐標來選定任意一個房間,即樓層、行號和列號。例如,選定第1層樓、第1行、第1列的房間(也可以說是第0層樓、第0行、第0列,這只是習慣問題),可以這樣表示:
(3)如果我們不關(guān)心樓層,也就是說要選取所有樓層的第1行、第1列的房間,那么可以將第1個下標用英文標點的冒號:來代替:
我們還可以這樣寫,選取第1層樓的所有房間:
多個冒號可以用一個省略號(...)來代替,因此上面的代碼等價于:
進而可以選取第1層樓、第2排的所有房間:
(4) 再進一步,我們可以在上面的數(shù)組切片中間隔地選定元素:
(5) 如果要選取所有樓層的位于第2列的房間,即不指定樓層和行號,用如下代碼即可:
類似地,我們可以選取所有位于第2行的房間,而不指定樓層和列號:
如果要選取第1層樓的所有位于第2列的房間,在對應的兩個維度上指定即可:
(6)如果要選取第1層樓的最后一列的所有房間,使用如下代碼:
如果要反向選取第1層樓的最后一列的所有房間,使用如下代碼:
在該數(shù)組切片中間隔地選定元素:
如果在多維數(shù)組中執(zhí)行翻轉(zhuǎn)一維數(shù)組的命令,將在最前面的維度上翻轉(zhuǎn)元素的順序,在我們 的例子中將把第1層樓和第2層樓的房間交換:
剛才做了些什么 我們用各種方法對一個NumPy多維數(shù)組進行了切片操作。 |
|
來自: qweertt4747 > 《待分類》