2016-07-14 3 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)) 

しかし、私はエラーを取得しています:

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

、0.01〔である(変数の深さは実際には変数のリストであることを意味し0.02どの..等])。

この関数は、リスト全体のように見えるのではなく、一度にパラメータ 'depth'の引数を1つだけ取ります。ケビンはコメントで言ったように

おかげ

+2

私はnumpyについては何も分かりませんが、 'a = numpy.arange(.01,1.01、.01)'を実行した場合はどうなりますか?大括弧は不要です。 – Kevin

+0

これをキャッチしてくれてありがとう – Labrat

答えて

2

は、あなたの問題はあなたのコードa = [numpy.arange(.01,1.01,.01)]で、その中に別のリストを持ってリストを作成しています。余分なブラケットを取り外すだけで問題ありません。

関連する問題