2016-07-14 5 views
0

특정 깊이에서 겹치는 부분을 계산하여 다양한 깊이에서 사용하는이 코드를 사용하려고합니다. 그러나for 루프를 사용하여 함수 자동화

def score(list1, list2, depth): 
    len_list = len(list1) 

    frac = numpy.ceil(depth * len_list) 

    frac = int(frac) 
    s = slice(0,frac) 

    list1 = list1[s] 
    list2 = list2[s] 

    return len(set(list1)&set(list2))/float(len(set(list1) | set(list2))) 


if __name__ == "__main__": 

    list1 = [2,4,6,8,10] 
    list2 = [1,2,3,4,5] 

    a = [numpy.arange(.01,1.01,.01)] 
    for i in a: 
     print(score(list1, list2, i)) 

, 나는 오류가 점점 오전이 코드를 실행하려고하면, 0.02

frac = int(frac) 
TypeError: only length-1 arrays can be converted to Python scalars 

변수 깊이가 [0.01 인 변수의 목록 (실제로는 것을 의미 ..기타]).

함수를 전체 목록처럼 보이지 않고 '깊이'매개 변수의 인수 하나만 사용하도록 어떻게 수정합니까?

감사

케빈처럼
+2

나는 numpy에 대해 아무 것도 안다.하지만'a = numpy.arange (.01,1.01, .01)'을했다면 어떻게 될까? 대괄호는 불필요한 것처럼 보입니다. – Kevin

+0

잡기에 감사드립니다. – Labrat

답변

2

은 코멘트에, 당신의 문제는 당신이 당신의 코드 a = [numpy.arange(.01,1.01,.01)]에서 그것의 안에 다른 목록이 목록을 만드는 말했다. 여분의 브래킷을 제거하기 만하면 작동합니다.

관련 문제