numpy多維數(shù)組的索引

(2,3) 表示兩個一維數(shù)組,每個一維數(shù)組長度為3
(2,3,4) 表示兩個二維數(shù)組,每個二維數(shù)組有3個一維數(shù)組,每個一維數(shù)組長度為4
(2,3,4,5) 表示兩個三維數(shù)組,每個三維數(shù)組有3個二維數(shù)組,每個二維數(shù)組有4個一維數(shù)組,一維數(shù)組長度為5

numpy多維數(shù)組shape的理解_二儀式的博客-CSDN博客

通過重排一維向量或轉(zhuǎn)換嵌套的Python列表來創(chuàng)建3D數(shù)組時,索引的含義為(z,y,x)。

第一個索引是平面的編號,然后才是在該平面上的移動:


image.png

這種索引順序很方便,例如用于保留一堆灰度圖像:這a[i]是引用第i個圖像的快捷方式。

但是此索引順序不是通用的。處理RGB圖像時,通常使用(y,x,z)順序:前兩個是像素坐標,最后一個是顏色坐標(Matplotlib中是RGB ,OpenCV中是BGR ):


image.png
image.png

顯然,NumPy函數(shù)像hstack、vstack或dstack不知道這些約定。其中硬編碼的索引順序是(y,x,z),RGB圖像順序是:

image.png

如果數(shù)據(jù)的布局不同,則使用concatenate命令堆疊圖像,并在axis參數(shù)中提供顯式索引數(shù)會更方便:


image.png

如果不方便使用axis,可以將數(shù)組轉(zhuǎn)換硬編碼為hstack的形式:

image.png

這種轉(zhuǎn)換沒有實際的復制發(fā)生。它只是混合索引的順序。

混合索引順序的另一個操作是數(shù)組轉(zhuǎn)置。檢查它可能會讓我們對三維數(shù)組更加熟悉。

根據(jù)我們決定的axis順序,轉(zhuǎn)置數(shù)組所有平面的實際命令將有所不同:對于通用數(shù)組,它交換索引1和2,對于RGB圖像,它交換0和1:

image.png

有趣的是,(和唯一的操作模式)默認的axes參數(shù)顛倒了索引順序,這與上述兩個索引順序約定都不相符。

最后,還有一個函數(shù),可以在處理多維數(shù)組時節(jié)省很多Python循環(huán),并使代碼更簡潔,這就是愛因斯坦求和函數(shù)

看圖學NumPy:掌握n維數(shù)組基礎知識點,看這一篇就夠了創(chuàng)事記新浪科技_新浪網(wǎng) (sina.com.cn)

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容