2017-12-02 7 views
0

cdist()를 사용하여 사용자 정의 메트릭에 추가 인수를 전달할 수 있습니까? 난 그냥 여분의 키워드를 추가 시도하지만 오류 얻을 :Scipy cdist()에서 메트릭에 인수 전달

def distanceMetric(x, y, radius=1): 
    return x - y + radius 

def test(xs, ys, radius=1): 
    return cdist(xs, ys, metric=distanceMetric, radius=radius) 

을 내가 실행하면

test([[1],[2],[3]], [[5],[6],[7]]) 

을 나는라는 오류 메시지가 : 키워드의

TypeError: cdist() got an unexpected keyword argument 'radius' 
+0

는 https://stackoverflow.com/help (A [, 최소한의 완전하고 검증 예]를 포함하십시오/mcve). 그것이 없으면 코드에 대해 너무 많이 추측해야합니다. –

+0

예를 들어 주셔서 감사합니다. 이 코드는 SciPy 1.0.0을 사용하여 저에게 적합합니다. 어떤 SciPy 버전을 사용하고 있습니까? 'import scipy;와 함께 버전을 찾을 수 있습니다. print (scipy .__ version __)' –

+0

저는 0.19.1을 사용하고 있습니다. 이 버전에는 kwargs 옵션이없는 것으로 보입니다 : https://docs.scipy.org/doc/scipy-0.19.1/reference/generated/scipy.spatial.distance.cdist.html#scipy.spatial.distance. cdrist –

답변

0

취급 SciPy 1.0.0에 cdist의 인수가 추가되었습니다. 업그레이드 할 수없는 경우, 당신은 이런 식으로 test 기능에 cdist의 전화를 수정할 수 있습니다

def test(xs, ys, radius=1): 
    return cdist(xs, ys, metric=lambda x, y, radius=radius: distanceMetric(x, y, radius))