簡體   English   中英

Python Numpy初學者:獲取形狀為((M,N),(M,N))的數組

[英]Python Numpy beginner: getting an array with a shape ((M,N),(M,N))

作為代碼的輸入,我需要一個'ndarray'(稱為C),其形狀為:((4,N),(4,N))。 因此,如果N = 3,我以為可以這樣構造它:

import numpy as np
A=np.array([[1, 2,3], [0.1, 0.2,0.3],[0.4,0.5,0.6],[0.7,0.8,0.9]])
B=np.array([[4,5,6], [0.4, 0.5,0.6],[0.7,0.8,0.9],[0.7,0.8,1]])

因此,如何組合A和B來得到形狀為((4,3),(4,3))的C(st C [0]也應為A,C [1]應為B)?

我試過了:

C=np.concatenate(([A], [B]), axis=0)

,但是得到的C.shape是(2,4,3)而不是((4,3),(4,3))。 然后我天真地嘗試重塑C:

C.reshape((4,3),(4,3)) 

但是然后我收到一條錯誤消息。

如果問題太基本了,我感到抱歉,我剛剛開始使用python。

最好,

史蒂芬

為了執行您要的操作,如果您了解numpy ndarrays的工作原理,則更為簡單。 在您列出的示例中,您可以使用以下形狀在3維中精確地創建該類型的數組:

numpy.zeros((4,N,2));

這將創建一個具有您想要的形狀的數組。 關於numpy數組創建文檔頁面上有很多有關如何使用它的重要信息。

但是,如果要合並兩個數組,有很多方法可以做到。

stacked0=numpy.stack(A,B)                # Stack the arrays along a new axis (a 3rd axis in this case)
stacked0.shape                           # outputs (2,4,3) in the example arrays.      

這將創建一個新軸並沿其合並,在這種情況下,默認軸替換第一個軸(axis = 0),並將其余軸向下移動。 這僅在以后需要索引以及高級應用程序中某些固定性能時才重要。 作為初學者,最重要的事情是了解要合並的軸。

stacked1=numpy.stack([A,B],axis=1)    # Replaces the second axis to stack
stacked1.shape                        # (4,2,3)
stacked2=numpy.stack([A,B],axis=2)    # Appends a third axis
stacked2.shape                        # (4,3,2)

您也可以沿現有軸將它們串聯起來。

concated0 = numpy.concatenate([A,B],axis=0) # merges them along the first axis
concated0.shape                  # (8,3)
concated1 = numpy.concatenate([A,B],axis=1)
concated1.shape                  # (4,6)

有關如何重新排列陣列的更多選項,請參見陣列操作文檔

暫無
暫無

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

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