2013-07-17 33 views
7

numpyとscipyを使用しましたが、実際に配列の次元を気にしていましたが、2次元配列としてその点を受け入れる関数名CovexHull(point)があります。2次元配列を2次元配列で作成する

船体=凸包(ポイント)

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. ]]) 

あなたはポイントの上に見ることができるようにndim 2

とnumpyのある今、私は2つの異なるnumpyの配列(TPとFPを持っています)like this(例: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. ]) 

私の質問は2次元のnumpyを作成する方法です配列は事実上tpとfpの点と似ています

答えて

16

2つの10要素の1次元配列を2次元配列np.vstack((tp, fp)).Tに結合する場合は、それを行います。 np.vstack((tp, fp))は形状の配列(2,10)を返し、T属性は、形状(10,2)(すなわち、行ではなく列を形成する2つの1-d配列)の転置配列を返します。

>>> 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、しかし、あなたは[ 'np.column_stack'](http://docs.scipy.org/doc/numpy/reference/generated/numpy.column_stack.html)と直接右の形状を得ることができます。 – Jaime

+0

これはさらに優れています! – ijmarshall