3
兩個陣列x
和y
的形狀是(a,b)
。我如何獲得組合形狀(a,b,2)
?如何實現'內部'zip?
我目前的解決方案是
z = np.zeros((a,b,2))
z[:,:,0] = x
z[:,:,1] = y
是否有可能實現這一目標而無需創建一個新的陣列?
兩個陣列x
和y
的形狀是(a,b)
。我如何獲得組合形狀(a,b,2)
?如何實現'內部'zip?
我目前的解決方案是
z = np.zeros((a,b,2))
z[:,:,0] = x
z[:,:,1] = y
是否有可能實現這一目標而無需創建一個新的陣列?
您可以使用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
這仍然是「創建新的數組」,但我不認爲這是有可能避免的,除非'x'和'y'開始時是連續的。 – askewchan
在我的情況下,'dstack'方法實際上有點慢。這是1.42s與1.29s。 – letmaik