2017-02-14 3 views
0

私は値が3列の行列である辞書を持っています。私は各値の3番目の列を抽出し、それらをすべて1つの行列に並べて連結したいと考えています。私は一般的なスライスは辞書では機能しないので、これを行う方法を理解できません。辞書はこのデータを保存する最善の方法でも、パンダはより良くなるだろうか?私はリスト(my_dict.values())をやってみましたが、これはもう動作していないようです。 Python 3.6を実行しています。行列値を使って辞書から列データを抽出する方法は?

Dictionary image

答えて

1
In [1]: dd = {'one':np.arange(12).reshape(4,3),'two':np.arange(12).reshape(4,3)*2} 

をキーの順序は問題ではない場合:

In [3]: dd.values() 
Out[3]: 
dict_values([array([[ 0, 1, 2], 
     [ 3, 4, 5], 
     [ 6, 7, 8], 
     [ 9, 10, 11]]), array([[ 0, 2, 4], 
     [ 6, 8, 10], 
     [12, 14, 16], 
     [18, 20, 22]])]) 

たちは

In [4]: np.array(dd.values()) 
Out[4]: 
array(dict_values([array([[ 0, 1, 2], 
     [ 3, 4, 5], 
     [ 6, 7, 8], 
     [ 9, 10, 11]]), array([[ 0, 2, 4], 
     [ 6, 8, 10], 
     [12, 14, 16], 
     [18, 20, 22]])]), dtype=object) 

list(values())がよさそうだ(PY3に)望んでいないものを - のリストを与えます異なる方法で結合することができる配列

In [5]: np.array(list(dd.values())) 
Out[5]: 
array([[[ 0, 1, 2], 
     [ 3, 4, 5], 
     [ 6, 7, 8], 
     [ 9, 10, 11]], 

     [[ 0, 2, 4], 
     [ 6, 8, 10], 
     [12, 14, 16], 
     [18, 20, 22]]]) 

In [7]: np.array(list(dd.values()))[:,:,2] 
Out[7]: 
array([[ 2, 5, 8, 11], 
     [ 4, 10, 16, 22]]) 

np.concatenate(list(dd.values()),axis=0)は3dの代わりに2dの配列を作成するので、[:,2]は2dではなく1dになります。しかし、他の賢明な同じ。

関連する問題