2013-07-17 138 views
7

我用numpy和scipy,還有一些函數真的關心數組的維數我有一個函數名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 )像這樣(例如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

如果您希望將兩個10個單元的1-d數組組合成一個2-d數組np.vstack((tp, fp)).T就可以了。 np.vstack((tp, fp))將返回一個形狀數組(2,10),而T屬性返回形狀爲(10,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