タプルのリストtemplates
(region, calc_3d_harmonics(region))
ここで、calc_3d_harmonics
は各地域の署名を返す関数です。最小スコア(実際のスコアは関係ありません)。Python - min(list、key = func)を使用するタプルの最小リスト効率を改善する方法
領域のスコアは、calc_harmonics_distance(calc_3d_harmonics(region),query_harmonics, radius)
で与えられます。これは、いくつかの半径(query_harmonicsとradiusは事前に計算されています)を指定した2つの高調波シグネチャ間の距離を計算する関数です。
私の現在のソリューションは、次のとおりです。
query_harmonics = calc_3d_harmonics(query_region)
ref_region, score = min([(t[0], calc_harmonics_distance(t[1], query_harmonics, radius)) for t in templates], key=lambda x: x[1])
注:calc_3d_harmonics
とcalc_harmonics_distance
の両方が非常に遅く、重い機能です
query_harmonics = calc_3d_harmonics(query_region)
ref_region, score = min(templates, key=lambda t: calc_3d_harmonics_distance(t[1], query_harmonics, radius))
チームのメンバーは、私が代わりに以下を使用することを示唆しました。またscore
は_
で置き換えることができます。
彼の提案は、高調波機能が主要な操作であるため重要ではないが、より良い実行時間をもたらすと主張する。 min(list, key=func)
が鍵のリストを作成した場合、私たちのバージョンは同等であり、私のバージョンはより短いですが、私が思うたびに鍵を計算すると、私のバージョンは遅くなります。
どちらが速いのですか?私はこれを行うには(実行時に)より良い方法が必要であると思います(おそらくnumpyを使用していますか?)、いくつかの提案を聞いてみたいと思います。