2013-07-17 9 views
7

Użyłem numpy i scipy i tam niektóre funkcje naprawdę dbają o wymiar tablicy Mam nazwę funkcji CovexHull (punkt), która akceptuje punkt jako tablica dwuwymiarowa.Tworzy 2-wymiarową tablicę z 2 jednowymiarowymi tablicami

kadłuba = otoczka wypukła (punkty)

In [1]: points.ndim 
Out[1]: 2 
In [2]: points.shape 
Out[2]: (10, 2) 
In [3]: points 
Out[3]: 
array([[ 0. , 0. ], 
     [ 1. , 0.8], 
     [ 0.9, 0.8], 
     [ 0.9, 0.7], 
     [ 0.9, 0.6], 
     [ 0.8, 0.5], 
     [ 0.8, 0.5], 
     [ 0.7, 0.5], 
     [ 0.1, 0. ], 
     [ 0. , 0. ]]) 

Jak widać powyżej punktów jest numpy z ndim 2.

teraz mam 2 różni numpy tablicy (TP i FP) w ten sposób (na przykład fp)

In [4]: fp.ndim 
Out[4]: 1 
In [5]: fp.shape 
Out[5]: (10,) 
In [6]: fp 
Out[6]: 
array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.4, 
     0.5, 0.6, 0.9, 1. ]) 

Moje pytanie brzmi: jak utworzyć dwuwymiarowy numpy? array skutecznie jak punkty z tp i fp

Odpowiedz

16

Jeśli chcesz połączyć dwie 10-elementowe 1-d tablice w 2-d tablicy np.vstack((tp, fp)).T zrobi to. np.vstack((tp, fp)) zwróci tablicę kształtu (2, 10), a atrybut T zwraca transponowaną tablicę o kształcie (10, 2) (tj. Z dwoma 1-d tablicami tworzącymi kolumny zamiast wierszy).

>>> tp = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 
>>> tp.ndim 
1 
>>> tp.shape 
(10,) 

>>> fp = np.array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19]) 
>>> fp.ndim 
1 
>>> fp.shape 
(10,) 

>>> combined = np.vstack((tp, fp)).T 
>>> combined 
array([[ 0, 10], 
     [ 1, 11], 
     [ 2, 12], 
     [ 3, 13], 
     [ 4, 14], 
     [ 5, 15], 
     [ 6, 16], 
     [ 7, 17], 
     [ 8, 18], 
     [ 9, 19]]) 

>>> combined.ndim 
2 
>>> combined.shape 
(10, 2) 
+6

+1, ale można uzyskać odpowiedni kształt bezpośrednio z [ 'np.column_stack'] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.column_stack.html) . – Jaime

+0

To jeszcze lepiej! – ijmarshall

Powiązane problemy