2017-03-02 9 views
2

私は、空でないリストlを取るPython関数one_mode(l)を書こうとしており、そのモードとモードの頻度を持つペアを返します。 (場合には任意のものを返すことができ、いくつかのモードがあります。)見つからないタイプのエラー

をこれまでのところ、私が持っている...

以下のテストのために働く
from scipy import stats 
def one_mode(l): 
    return stats.mode(l) 

one_mode([5, 6, 7, 5]) == (5,2) 

でもありませんテストのために:

one_mode([5, 6, 7, 5, 6]) in {(5, 2), (6, 2)} 

この場合、それは私に

を与えます

非ハッシュタイプ: 'numpy.ndarray' を

は私の現在のコードを使用して、この周りに方法はありますか?

+0

'使用してみてください'set'ではなく' list'です。これは '[(5,2)、(6,2)]' –

+1

であるか、または 'one_model(l)'をプレーンなタプルに変換します(ハッシュ可能になります) – Julien

答えて

1

あなたはタプルにstats.modeの結果を強制する場合は、あなたの検索が動作します:

コード:

from scipy import stats 
def one_mode(l): 
    mode = stats.mode(l) 

    # return first mode results as tuple 
    return mode[0][0], mode[1][0] 

テストコード:

assert one_mode([5, 6, 7, 5]) == (5, 2) 
assert one_mode([5, 6, 7, 5, 6]) in {(5, 2), (6, 2)} 
関連する問題