2016-12-12 14 views
0

最初の質問を明確な方法で投稿できなかったので、私はより具体的にするつもりです。
私は2つの2d行列を持っています.1つは5つの列(データと呼ぶ)と7つの列(BMUと呼ぶことにしましょう)です。 5列のサブマトリックス測光と最後の2列をそれぞれzとz_errとしましょう。
私がしたいことは、BMUの最後の2つの列を除外し、データオブジェクトとBMUオブジェクトの間のユークリッド距離をすべて計算し、各データオブジェクトに対して最も近いk個のBMUオブジェクトを見つけ出すことです。 (ここでは距離行列を並べ替えるので、特定のBMUオブジェクトに距離を関連付けることはできません)
BMU行列のこの最も近いk個のオブジェクトを取得し、6番目と7番目の列を使用して操作。
私が必要とするこれらの情報をすべて格納して検索するために、何らかの辞書を作成しようとしていました。したがって、私が距離を計算する際には、BMuオブジェクトのフィーチャ(光度測定、zおよびz_err)に特定の距離を関連付けるためにIDを使用することができます。任意の助け
Python:2つのリストから辞書を構築する

感謝:)

+0

辞書 これは辞書を作成します私は最後の2つの列から測光値を分離し、値として別々に値を加算することはできません –

答えて

7

あなたはzipdict

例を使用することができます。

dictionary = dict(zip(keys, values)) 
+0

ああ、あなたの方がさらに優れています。もっと簡潔な表記 – lhk

3

せんべいNorimakiは完璧な答えを与えている、それは私のループよりも簡潔です。 私はいくつかの付加価値を与えるために私の答えを編集しました。

私は、これはあなたが追加条件を追加することができるという利点がありzip機能と発電

{key: value for (key, value) in zip(keys, values)} 

を使用します。たぶんあなたはいくつかのキーをスキップしたいですか?ループにおいて

{key: value for (key, value) in zip(keys, values) if ...} 

、これは次のようになります(ZIP(範囲(LEN(BMU))、BMU [:、: - 2]))

keys=["a", "b", "c"] 
vals=[1, 2, 3] 

new_dict={} 

for key, val in zip(keys, vals): 

    # check invariants on key and value, 
    # skip if the tests fail 
    if not do_some_tests(key, val): 
     continue 
    new_dict[key]=val 
+0

@downvoterコメントを残すことはできますか? – lhk

関連する問題