2015-02-05 56 views
0

我有一個numpy的陣列像這樣子陣,NumPy的:擴大更大的陣列

[[1 2 3 
    2 0 0 
    3 0 0]] 

,我希望把它變成這種形式,

[[1 2 2 3 3 
    2 0 0 0 0 
    2 0 0 0 0 
    3 0 0 0 0 
    3 0 0 0 0]] 

我的想法是提取子-array包含原始數組中的零,並使用Kronecker產品獲取我想要的數組中的子數組。但我不知道得到輸出數組的第一行和第一列。

如何實現這一目標?請給我任何建議。

+0

我按照您在問題中提出的建議調整了標題 - 如果您覺得它不符合您的要求,請隨時將其更改或進一步改進。 – 2015-02-05 15:29:19

回答

3

另一種方法是使用np.repeat。如果arr是您的3×3陣列:

>>> arr.repeat([1, 2, 2], axis=0).repeat([1, 2, 2], axis=1) 
array([[1, 2, 2, 3, 3], 
     [2, 0, 0, 0, 0], 
     [2, 0, 0, 0, 0], 
     [3, 0, 0, 0, 0], 
     [3, 0, 0, 0, 0]]) 

例如,arr.repeat([1, 2, 2], axis=0)意味着arr第一行重複一次,第二行重複兩次和第三行被重複三次。

然後對列進行同樣的操作。

+0

感謝您回答我這個有用的答案,但是如果輸入數組中有很多行,比如20,那麼通過使用這些代碼來獲取輸出數組將會很不方便。 而我仍在考慮如何解決這個問題。 – Heinz 2015-02-05 16:25:13

+1

@ Heinz:如果'arr'有20行,例如'arr.repeat([1] + [2] * 19,axis = 0)''可以總是重複第一行兩行之後的每一行。 – 2015-02-05 16:42:24