簡體   English   中英

將2D numpy數組重組為3D

[英]Reorganizing a 2D numpy array into 3D

我有一個12X2陣列,我想重新組織成一個3x4x2陣列。 具體來說,我想改變

a = np.array(([1,13],[2,14],[3,15],[4,16],[5,17],[6,18],[7,19],[8,20],[9,21],[10,22],[11,23],[12,24]))

 [[ 1 13]
[ 2 14]
[ 3 15]
[ 4 16]
[ 5 17]
[ 6 18]
[ 7 19]
[ 8 20]
[ 9 21]
[10 22]
[11 23]
[12 24]]`

進入如下所示的矩陣:

[[[ 1. 2. 3. 4.]
[ 5. 6. 7. 8.]
[ 9. 10. 11. 12.]]
[[ 13. 14. 15. 16.]
[ 17. 18. 19. 20.]
[ 21. 22. 23. 24.]]]

我在想一個三嵌套for循環,但我編寫它的方式不起作用。 而且我不能完全圍繞numpy索引來弄清楚如何做到這一點。

這當然是示例代碼。 我想改變它,以便在緯度 - 經度網格上制作3個全球降水的前3個EOF圖。 EOF從8192x8192陣列中拉出並放入64x128x3陣列。 (我只使用大矩陣的前3列。每列都是一個EOF,每個列向下,值沿着第一個緯度沿經度列出,然后沿着第二個緯度再次以經度列出,所以直到列底部的第128個緯度。當我完成第一個緯度為-87.something時,我的數組將相對於基本地圖顛倒,但我打算使用np.flipud來一旦完成就修好它。

您可以使用np.reshapenp.transpose的組合,如下所示 -

a.reshape(3,4,-1).transpose(2,0,1)

所以,對於你的實際情況(如果我理解正確)將是 -

a.reshape(64,128,-1).transpose(2,0,1)

請注意,在這種情況下,輸出形狀將是(3, 64, 128) 所以,我假設樣本案例與您的實際案例不符。

有很多方法可以做到, aTreshape(2,3,4)怎么樣:

n [14]: a.T.reshape(2,3,4)
Out[14]: 
array([[[ 1,  2,  3,  4],
        [ 5,  6,  7,  8],
        [ 9, 10, 11, 12]],

       [[13, 14, 15, 16],
        [17, 18, 19, 20],
        [21, 22, 23, 24]]])

暫無
暫無

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

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