2017-05-23 1 views
0

두 세트의 모든 요소 조합 사이의 거리를 계산하고 싶습니다.지도의 함수

descriptor_1 (descriptor_2)은 길이 N1 (N2) (요소 당 하나의 2D 배열)의 2D 배열 목록입니다.

이 두 세트 사이의 모든 조합을 계산하기 위해, I는 사용 길이 N1*N2 2- uples 목록을 수득

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

한다.

그리고 계산하는 거리 :

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 

:

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

하지만, 내 튜플은 두 요소를 포함, 나는 오류를 이해하지 못합니다.

+0

당신은 당신이 – Exprator

+1

목록 콤비의 출력을 게시 할 수있는 중간 목록의 필요 없음 'map'이 자동으로 튜플을 풀어주기를 기대하지만, 예상대로 실제로 구현된다면 튜플을 정말로 전달하고자하는 사용자는 어떨까요? – Sraw

답변

2

귀하의 fucntion 훨씬 더 효율적, BTW

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))