2012-12-20 42 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