2013-10-31 86 views
3

兩個陣列xy的形狀是(a,b)。我如何獲得組合形狀(a,b,2)如何實現'內部'zip?

我目前的解決方案是

z = np.zeros((a,b,2)) 
z[:,:,0] = x 
z[:,:,1] = y 

是否有可能實現這一目標而無需創建一個新的陣列?

回答

3

您可以使用np.dstack

In [2]: import numpy as np 
In [3]: a = np.random.normal(size=(4,6)) 
In [4]: b = np.random.normal(size=(4,6)) 

In [5]: np.dstack((a,b)).shape 
Out[5]: (4, 6, 2) 

和比較:

In [10]: d = np.dstack((a,b)) 
In [11]: c = np.zeros((4,6,2)) 
In [12]: c[:,:,0] = a 
In [13]: c[:,:,1] = b 

In [14]: np.allclose(c,d) 
Out[14]: True 
+0

這仍然是「創建新的數組」,但我不認爲這是有可能避免的,除非'x'和'y'開始時是連續的。 – askewchan

+0

在我的情況下,'dstack'方法實際上有點慢。這是1.42s與1.29s。 – letmaik