2017-05-23 8 views
0

2つのセットからの要素のすべての組み合わせの間の距離を計算します。マップ内の関数は1つの引数のみを検出します

descriptor_1(resp。descriptor_2)は、長さN1(N2)(要素あたり1つの2D配列)の2D配列のリストです。私が使用するこれらの2つのセットの間のすべての組み合わせを計算する

combi = list(itertools.product(descriptor_1, descriptor_2)) 

N1*N2の2- uplesのリストが得られます。

と距離を計算する:

dist = map(chi2_dist, combi) 

場所:

def chi2_dist(a, b): 
    a = a.flatten() 
    b = b.flatten() 

    dist = (1/2) * np.sum((a-b)**2/(a+b+EPS)) 

    return dist 

私は次のエラーを取得しかし:私のタプルは2つの要素が含まれているとして、

TypeError: chi2_dist() takes exactly 2 arguments (1 given) 

をしかし、私はエラーを理解していない。

+0

は、あなたがあなたである – Exprator

+1

リストコンビの出力を投稿することができ、中間リストの必要はありません'map'があなたのタプルを自動的にアンパックすることを期待していますが、実際にあなたが期待するように実装されているのであれば、本当にタプルを渡したいユーザはどうでしょうか? – Sraw

答えて

2

あなたfucntionは、はるかに効率的、ところで

def chi2_dist(ab): 
    a = ab[0] 
    b = ab[1] 
    a = a.flatten() 
    b = b.flatten() 

あるべきちょうど

map(chi2_dist, itertools.product(descriptor_1, descriptor_2)) 

関連する問題