2016-06-29 37 views
0

我有鍵Python字典(0,1,2....n)與每個鍵保持位置座標中的元組,例如Python的字典來numpy的多維數組

{0:(x1,y1), 1:(x2,y2), 2:(x3,y3), ....., n-1:(xn,yn)} 

我想創建多維數組像

coordinates= np.array([ 
     [x1, y1], 
     [x2, y2], 
     ... 
     [xn, yn] 
     ]) 

我嘗試過使用array = numpy.array(vehPositions.values()),但無法獲得預期的結果。

+0

爲什麼不'numpy.array(vehPositions.values())'工作?這些值是以不同的順序還是錯誤的值? – Divakar

+0

我只能得到一個像array(dict_values([(x1,y1),(x2,y2),...]))'的類型(對象)數組,如 ''。如果我使用'array(x)',它會返回我**'numpy.ndarray'對象不可調用**。如果我做'array [x]',它給了我**太多索引陣列** – Mechanic

回答

3

如果您使用的是python 3.x,您應該明確地將其轉換爲list,因爲values()方法dict將返回dict_values對象。

你應該這樣做:

array = numpy.array(list(vehPositions.values())) 

要在字典中的元組值創建列表清單,建立自己的陣列,您將不再需要一個顯式的list

array = numpy.array([list(v) for v in vehPositions.values()]) 

注意不要使用生成器表達式,因爲這將返回包含生成器對象的數組:

>>> numpy.array(list(v) for v in vehPositions.values()) 
array(<generator object <genexpr> at 0x03B60AA8>, dtype=object) 

下面的試驗演示程序:

>>> d = {0: (1,2), 1: (3,4), 2: (5,6)} 
>>> numpy.array([list(v) for v in d.values()]) 
array([[1, 2], 
     [3, 4], 
     [5, 6]])