2010-12-22 117 views
0

我想在NumPy中進行各種拼接。比方說,我有兩個數組,ab在NumPy中拼接數組?

>>> a 
array([[ 1, 10], 
     [ 2, 20], 
     [ 5, 30]]) 
>>> b 
array([[ 1, 11], 
     [ 3, 31], 
     [ 4, 41]]) 

,我想一起拼接成下面的數組,c

>>> c 
array([[ 1., 10.], 
     [ 2., 20.], 
     [ 3., nan], 
     [ 4., nan], 
     [ 5., 30.]]) 

也就是說,從我的第一列拼接值b轉換成a而不會打擾第二欄。

我當然可以很容易地實現這個功能,但是如果NumPy爲我做到這一點會更好。那可能嗎?

回答

1

通過mishaF答案是唯一缺少的最後一步 - 使最後一列的條目具有唯一性。完整的代碼才能獲得c(除了D型,從int在您的文章變成float)是

b[:,1]=numpy.nan 
c = numpy.r_[a, b] 
c.sort(0) 
c = c[numpy.unique(c[:,0], True)[1]] 
1

我不認爲NumPy有什麼要做的。你是否需要確切的結果(按順序,第二列未定義值)?也許有些東西接近於目標,但仍然有用。

+0

是啊,我已經檢查numpy的文檔後,得出了同樣的結論。沒什麼大不了,我只會迭代數組。 – c00kiemonster 2010-12-22 07:49:03

1

您可以將兩者堆疊在一起然後進行排序。然而,這並沒有照顧的事實,你中有兩個指標1.不是知道這是一個很大的進步...

b[:,1]=np.nan 
c = np.vstack((a,b)) 
c.sort(0)