簡體   English   中英

Numpy / 不確定 np.swapaxes(array, 1,2) 和 np.swapaxes(array, 2,1) 之間的等價性?

[英]Numpy / Uncertain about equivalence between np.swapaxes(array, 1,2) and np.swapaxes(array, 2,1)?

我對使用np.swapaxes並不那么自在,並拋開我的自豪感來問這個可能很愚蠢的問題。

考慮到 3D 數組(例如 (2, 4, 3)), np.swapaxes(array, 1,2)給出與np.swapaxes(array, 2,1)相同的結果是否正常?

array = np.array([[[1.0, -1.0, -2.0],[-1.0, -2.0, -10.0],[-2.0, -10.0, 11.0],[-10.0, 11.0, 4.0]],
                  [[1.1, -1.1, -2.1],[-1.1, -2.1, -10.1],[-2.1, -10.1, 21.1],[-10.1, 21.1, 2.1]]])

swapaxed1 = np.swapaxes(array, 1,2)
swapaxed2 = np.swapaxes(array, 2,1)
swapaxed1 == swapaxed2

array的尺寸會有所不同嗎?

感謝您幫助更好地理解這種情況下的swapaxes 最好的,

在多維數組中,一組索引(非負整數)用於引用該數組中的特定值。 維數決定了唯一指定元素所需的此類整數的數量。 因此,對於一個m xnxp 3-D 數組,您需要一組整數 (i, j, k)。 值得注意的是,這是一組有序的整數,這意味着它們的排列順序很重要,因為每個 integer 都與數組的維度相關聯。

所有swapaxes所做的只是更改數組中特定值的這些索引的順序。 如果交換軸 0 和 1,最初由唯一整數集 (i, j, k)引用的值現在將由 (j, i, k) 集引用:前兩個索引是交換,因為它們綁定的軸已交換。

因此,您會明白為什么它總是必須相同:它是一個swap ,並且只有參考索引的順序被交換。 (至少在這種情況下,最重要的是 numpy 實際執行以實現此目的的所有內容。)在二維中,交換軸操作僅相當於轉置。

這個SO 討論中閱讀更多關於它的信息。 特別是,GoingMyWay 的回答可能會幫助您更好地對其進行可視化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM