【Python】python 基礎語法之列表、n維陣列的變換(取反(逆序)\切片等)
【筆記】
二維陣列取反:
執行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
版權宣告:本文為博主原創文章,轉載請附上博文連結!