2016-06-29 19 views
0

をnumpyのするタプル内の位置座標を保持し、各キーと(0,1,2....n)などPythonの辞書ですが、私はキーを持つPythonの辞書を持っている多次元配列

{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

に明示的にキャストしてvalues()メソッドをdictにすると、dict_valuesオブジェクトが返されます。

あなたが行う必要があります。

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

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

を辞書でタプル値からリストのリストを作成して、配列を構築するには、listへの明示的なキャストを必要としませんジェネレータオブジェクトを含む配列を返すので、ジェネレータ式を使用しないように注意してください。

>>> 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]]) 
関連する問題