使用np.transpose
然後reshape
像所以 -
X.transpose(1,2,0).reshape(-1,X.shape[0])
解釋 -
1)你想形成斷X[:, 0, 0]
,X[:, 0, 1]
等的行,即,我們以「推」 axis=0
元件以這樣的2D陣列輸出的最後軸線。接下來,我們必須確定行的順序,這將從axes=1,2
中形成。現在,回到第一行和第二行之間即在X[:, 0, 0]
和X[:, 0, 1]
,axis=1
之間的期望的2D陣列輸出保持不變。因此,在二維數組輸出中,第二個軸(axis = 1)優先於第三個軸(axis = 2)。所以,在X
我們推axis=1
到axis=0
和axis=2
到axis=1
。因爲,如前所述axis=0
在X
必須被移動到最後一個軸,所以這將是axis=2
。所有這些都可以通過X.transpose(1,2,0)
完成。我們稱之爲Y
。
2)。最後,我們要重塑Y
到2D
陣列,使得每行中的元素的數量是相同X.shape[0]
,這是通過Y.reshape(-1,X.shape[0])
實現。因此,最終的解決方案成爲 -
X.transpose(1,2,0).reshape(-1,X.shape[0])
採樣運行 -
In [25]: X
Out[25]:
array([[[ 0.19508052, 0.02481975],
[ 0.88915956, 0.95974095]],
[[ 0.23271151, 0.14730822],
[ 0.56763563, 0.30607283]],
[[ 0.33259228, 0.42552102],
[ 0.28950926, 0.47782175]]])
In [26]: X[:, 0, 0]
Out[26]: array([ 0.19508052, 0.23271151, 0.33259228])
In [27]: X[:, 0, 1]
Out[27]: array([ 0.02481975, 0.14730822, 0.42552102])
In [28]: X[:, 1, 0]
Out[28]: array([ 0.88915956, 0.56763563, 0.28950926])
In [29]: X[:, 1, 1]
Out[29]: array([ 0.95974095, 0.30607283, 0.47782175])
In [30]: X.transpose(1,2,0).reshape(-1,X.shape[0])
Out[30]:
array([[ 0.19508052, 0.23271151, 0.33259228],
[ 0.02481975, 0.14730822, 0.42552102],
[ 0.88915956, 0.56763563, 0.28950926],
[ 0.95974095, 0.30607283, 0.47782175]])
遺憾的混亂!行的順序對我的應用程序來說並不重要,或者沒關係。 – fabian789
@ fabian789查看編輯後的評論是否有幫助。 – Divakar
非常感謝,很有道理! – fabian789