2012-12-20 162 views
5

也許這是一個簡單的問題,但有沒有一種快速的方法來複制數組中的元素? 它應該像這樣對3D:numpy重複元素

1 2 3 
4 5 6 
7 8 9 

1 1 2 2 3 3 
1 1 2 2 3 3 
4 4 5 5 6 6 
4 4 5 5 6 6 
7 7 8 8 9 9 
7 7 8 8 9 9 

我有3試了嵌套的for循環,但這是很慢。

回答

6
>>> a = np.array([[1, 2, 3], 
        [4, 5, 6], 
        [7, 8, 9]]) 
>>> np.repeat(np.repeat(a, 2, 0), 2, 1) 

array([[1, 1, 2, 2, 3, 3], 
     [1, 1, 2, 2, 3, 3], 
     [4, 4, 5, 5, 6, 6], 
     [4, 4, 5, 5, 6, 6], 
     [7, 7, 8, 8, 9, 9], 
     [7, 7, 8, 8, 9, 9]]) 
+0

偉大的解決方案!但我發現這個函數將dtype從float64改爲float32。我能避免這種情況嗎? – Christian

+1

@Christian - 它不會改變我的dtype。 – eumiro

+0

對不起,我的錯 - 我用另一個破壞dtype的函數。謝謝! :) – Christian