【Python】python 基礎語法之列表、n維陣列的變換(取反(逆序)\切片等)

CS青雀發表於2018-12-07

【筆記】

二維陣列取反:

執行a[::-1],上下行交換。同樣的看成一維陣列的話,一行就是一個元素。

執行a[:, ::-1],上下前後交換。相當於對行取逆序,對列取逆序。

a=np.arange(12).reshape(3,4)
a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
a[::-1]
array([[ 8,  9, 10, 11],
       [ 4,  5,  6,  7],
       [ 0,  1,  2,  3]])
a[:,::-1]
array([[ 3,  2,  1,  0],
       [ 7,  6,  5,  4],
       [11, 10,  9,  8]])

=================================================

切記:a無論是列表還是numpy中n維陣列a[::-1]均表示將a 的第一個方括號內的元素進行逆序。
列表如何逆向地訪問值:
例如有一個list = [1,2,3,4,5,6,7,7,8] 訪問從倒數第一位到倒數第三位怎麼做到? 我想要的輸出效果應該是[8,7,7]
使用切片就可以了: list[::-1][:3]
          list[-3:][::-1]

list[::-1]是將列表反過來,一種是先反過來,然後取前三位;一種是先取後三位,再反過來。

同理在python中n維陣列的逆序也是這樣:
執行a[::-1],上下兩行交換了。同樣的看成一維陣列的話,一行就是一個元素,這個運算其實就是對一個一維陣列內的元素前後對調。多維陣列可以理解成對對第一個方括號內的每一個元素前後對調。

下面有人證實了:

分別進行圖中所示的4種運算。

執行a[:-1],移除了後面的一行。對於一維陣列,後面的一行其實就是最後一個元素,所以這個運算就是移除最後一個元素。

執行a[::-1],上下兩行交換了。同樣的看成一維陣列的話,一行就是一個元素,這個運算其實就是對一個一維陣列內的元素前後對調。多維陣列可以理解成對對第一個方括號內的每一個元素前後對調。

執行a[:,::-1],每一行中的元素前後交換了。簡單理解就是對第二層反括號內的元素前後對調。

執行a[:,:,::-1],這樣就好理解了,肯定是對第三層方括號內的元素對調。這也就解釋了,對於一個24位深度的影像執行這個操作的話,是對每個畫素的RGB進行對調。

對於影像而言,a[::-1],a[:,::-1],a[:,:,::-1]上述的三種方法分別是X軸的映象,Y軸的映象,BGR轉換為RGB的操作。
--------------------- 
作者:wonengguwozai 
來源:CSDN 
原文:https://blog.csdn.net/wonengguwozai/article/details/53357734 
版權宣告:本文為博主原創文章,轉載請附上博文連結!

相關文章