2017-10-05 8 views
0

私はSpark関数に入る数字のリストを持っています。それぞれの数値はカテゴリの下限です。たとえば、Apache sparkは境界のリストから番号を取得します

6.252 1 
5.502 2 
4.387 3 

この関数に数値を入力します。基本的には、リストのどのインデックスに該当するのかを見たいと思います。だから8.5が第1カテゴリーに入り、6.1が第2カテゴリーに入るだろう。

myIndex = list.index(min(list, key=lambda x:abs(x-inputVal)))) 

を使用して作業してみましたが、これは近接性のみを検索するため誤ったバケツを与える可能性があります。私はまた、ブルートフォースがリストを反復し、現在の価値と次の価値をつかむことを考えましたが、より洗練されたソリューションが必要です。

答えて

0

あなたはモジュール二分使用することができます。

import bisect 

breaks = sorted([4.387, 5.502, 6.252]) 

len(breaks) - bisect.bisect_left(breaks, 4.3) 
関連する問題