先來結論: 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 ...