我有2個numpy 1d數組,例如,如何將兩個1d numpy數組拉到2d numpy數組中
a = np.array([1,2,3,4,5])
b = np.array([6,7,8,9,10])
然後我怎樣才能獲得2D陣列[[1,6],[2,7],[3,8],[4,9],[5,10]
我有2個numpy 1d數組,例如,如何將兩個1d numpy數組拉到2d numpy數組中
a = np.array([1,2,3,4,5])
b = np.array([6,7,8,9,10])
然後我怎樣才能獲得2D陣列[[1,6],[2,7],[3,8],[4,9],[5,10]
的答案就在你的問題:
np.array(list(zip(a,b)))
編輯:
雖然我的POS t根據OP的要求給出答案,轉換到列表並返回到NumPy數組需要一些開銷。
因此,dstack
將是一個計算有效的替代方案(參考@ zipa的答案)。在發佈這個答案時,我並不知道dstack
,所以在@zipa中介紹這篇文章的時候感謝。
爲什麼在使用Numpy數組的時候使用普通的Python函數來做到這一點? –
@ PM2Ring你說得對。我不知道zipa的答案,但是第一個發佈。 –
您可以使用zip
np.array(list(zip(a,b)))
array([[ 1, 6],
[ 2, 7],
[ 3, 8],
[ 4, 9],
[ 5, 10]])
如果你有numpy的陣列可以使用dstack()
:
import numpy as np
a = np.array([1,2,3,4,5])
b = np.array([6,7,8,9,10])
c = np.dstack((a,b))
#or
c = np.column_stack((a,b))
或者,'np.stack((a,b),axis = -1)',但你的方式更緊湊。 –
FWIW,'np.column_stack'似乎是最快的方法,請參閱我對問題的評論以獲取詳細信息。 –
只需要注意 - 'np.dstack'在第三維堆棧數組。因此你會創建一個不必要的維度。 'np.column_stack'或'np.stack(...,axis = -1)'更合適。 –
對於非常小的數組,'zip'可以比調用numpy的功能,速度更快,但對於更長數組的Numpy函數更快_much_,'column_stack'是我測試中速度最快的。例如,對於長度爲1000的數組,「column_stack」大約比「zip」快1000倍。 [這是一些相關的timeit代碼](https://gist.github.com/PM2Ring/a4d0540f960a80fde91fa808eaa88700)。 –