對numpy中 transpose方法的理解

2021-08-28 04:32:29 字數 1542 閱讀 8111

先來結論: transpose方法是對shape起作用的

這裡直接以三維陣列為例,看**比較直觀

arr2 = np.arange(24).reshape(2,3,4)

print(arr2)

[[[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]]

[[12 13 14 15]

[16 17 18 19]

[20 21 22 23]]]

print(arr2.transpose(0, 1, 2))

[[[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]]

[[12 13 14 15]

[16 17 18 19]

[20 21 22 23]]]

# arr2是乙個shape為(2,3,4)的矩陣,對它進行transpose操作。

首先對矩陣的維度進行編號,矩陣三個維度編號依次為0,1,2.

而transpose函式的引數輸入就是基於這個編號的,呼叫transpose(0,1,2),那麼矩陣將不發生變化

print(arr2.transpose())

[[[ 0 12]

[ 4 16]

[ 8 20]]

[[ 1 13]

[ 5 17]

[ 9 21]]

[[ 2 14]

[ 6 18]

[10 22]]

[[ 3 15]

[ 7 19]

[11 23]]]

# 如果不輸入引數,直接呼叫transpose(),其效果就是將矩陣進行轉置,

起作用等價與transpose(2,1,0),即shape從(2,3,4)變為(4,3,2)

# 以下驗證我的理解,呼叫transpose(1, 0, 2),shape是否會從(2,3,4)變為(3,2,4)

print(arr2.transpose(1, 0, 2))

print(arr2.transpose(1, 0, 2).shape)

[[[ 0 1 2 3]

[12 13 14 15]]

[[ 4 5 6 7]

[16 17 18 19]]

[[ 8 9 10 11]

[20 21 22 23]]]

(3, 2, 4)

# 最後一次驗證我們的理解,呼叫transpose(0, 2, 1),shape從(2,3,4)變為(2,4,3)

print(arr2.transpose(0, 2, 1))

print(arr2.transpose(0, 2, 1).shape)

[[[ 0 4 8]

[ 1 5 9]

[ 2 6 10]

[ 3 7 11]]

[[12 16 20]

[13 17 21]

[14 18 22]

[15 19 23]]]

(2, 4, 3)

以上供參考。

對numpy中shape的理解

from 環境 windows,python3.5 import numpy as np a np.array 2,3,33 a array 2 3 33 print a 2 3 33 a.shape 3,a.shape 0 3 a.shape 1 traceback most recent cal...

筆記 對numpy中shape的理解

環境 windows,python2.7 import numpy as np a np.array 2,3,33 a array 2 3 33 print a 2 3 33 a.shape 3,一維情況中array建立的可以看做list 或一維陣列 建立時用 和 都可以,多維也一樣,兩種方法建立後...

對NumPy中dot 函式的理解

今天學習到numpy基本的運算方法,遇到了乙個讓我比較難理解的問題。就是dot函式是如何對矩陣進行運算的。一 dot 的使用 dot 返回的是兩個陣列的點積 dot product 1.如果處理的是一維陣列,則得到的是兩陣列的內積 順便去補一下數學知識 in d np.arange 0,9 out ...