2013-07-16 89 views
1

我過篩描述矩陣像這樣的:合併篩選描述矩陣,numpyarray

a=[[ 0.   0.   0.   ..., 0.01570028 0.11186453 
    0.03728818] 
[ 0.19031648 0.18246838 0.0156962 ..., 0.06474684 0.   0.  ] 
[ 0.   0.   0.00392734 ..., 0.06480112 0.17083933 
    0.04909176] 
..., 
[ 0.09828723 0.0176917 0.00196574 ..., 0.16905404 0.   0.  ] 
[ 0.23960059 0.18657423 0.00589182 ..., 0.00392788 0.   0.01963939] 
[ 0.00392924 0.09430183 0.15913433 ..., 0.00392924 0.01768159 
    0.00589386]] 
[[ 0.   0.   0.   ..., 0.01570028 0.11186453 
    0.03728818] 
[ 0.19031648 0.18246838 0.0156962 ..., 0.06474684 0.   0.  ] 
[ 0.   0.   0.00392734 ..., 0.06480112 0.17083933 
    0.04909176] 
..., 
[ 0.09828723 0.0176917 0.00196574 ..., 0.16905404 0.   0.  ] 
[ 0.23960059 0.18657423 0.00589182 ..., 0.00392788 0.   0.01963939] 
[ 0.00392924 0.09430183 0.15913433 ..., 0.00392924 0.01768159 
    0.00589386]] 

,我想以最快的方式合併,他們中的很多...如何做的?做一個所有數組的列表,然後用.dstack?由於

編輯:OK .dstack不起作用,因爲基體具有不同的尺寸...

爲如a=[[128 values]...[128 values]]len(a)=300b=[[128 values]...[128 values]]len(b)=1000結果應該是c=[[128 values]...[128 values]] len(c)=1300

+0

你能對你的意思是 「合併」 什麼更大呢?對我來說,你的問題是相當不明確的(雖然,我不得不穀歌SIFT:[尺度不變特徵變換](http://en.wikipedia.org/wiki/Scale-invariant_feature_transform)) – jorgeca

+0

嗯,我想連接兩個這個描述符數組。對於例如a = [[128值] ... [128值]],len(a)= 300和b = [[128值] ... [128值]] len(b)= 1000結果應該是c = [[128值] ... [128值]] len(c)= 1300 – Linda

+1

你可以編輯你的問題嗎?這是回答問題的信息。檢查[vstack](http://docs.scipy.org/doc/numpy/reference/generated/numpy.vstack.html#numpy.vstack)而不是dstack – jorgeca

回答

1

numpy的約定二維數組:第一個數字是行數,第二個數字是列數。

>>> import numpy as np 
>>> a=np.zeros((2,5)) 
>>> a 
array([[ 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0.]]) 
>>> a.shape 
(2, 5) 

使用vstack疊排明智的。

>>> a=np.zeros((300,128)) 
>>> b=np.zeros((1000,128)) 
>>> a.shape 
(300, 128) 
>>> b.shape 
(1000, 128) 
>>> c=np.vstack((a,b)) 
>>> c.shape 
(1300, 128) 
>>> len(c) 
1300 

Dstack的確是一個深度堆棧:

>>> np.dstack((a,a)).shape 
(300, 128, 2) 

如果你有陣列的列表:

a=[array1,array2,...,arrayn] 
c=np.vstack(a) 
+0

謝謝!這解決了我的問題:) – Linda