2017-07-10 2 views
2

リストの中央値を見つけようとしています。 selfies私はそれを二つの方法を試してみました、それがいずれかで働いていない(私は私が必要なものを輸入しているとリストがある)リストの名前Pythonでリストの中央値を調べるにはどうすればいいですか

def median(): 
    return numpy.median(numpy.array(selfies)) 

あり、これは

ret = umr_sum(arr, axis, dtype, out, keepdims)

TypeError: cannot perform reduce with flexible type

エラーです

およびその他の方法は、エラーが

def median(): 
    med = statistics.median(selfies) 
    return med 

ありました

return (data[i - 1] + data[i])/2

TypeError: unsupported operand type(s) for /: 'str' and 'int'

は は、リスト[math.floor(LEN(リスト)/ 2)]を取得し、あなたが望む方法に応じて、あなたのリストをソートするために)((.sortを使用)、または.sorted事前

+1

[リストの中央値を見つける](https://stackoverflow.com/questions/24101524/finding-median-of-list-in-python) –

+1

「selfies」は何ですか? – eyllanesc

+1

あなたの入力に文字列があるようです。 – user2357112

答えて

2

こんにちはUser9123、

Medain()関数の主な用途


を使用しない場合

このモジュールは、mathematical statistics of numeric (Real-valued) dataを計算するための関数を提供します。

特に明記しない限り、これらの関数は、int、float、decimal.Decimalおよびfractions.Fractionをサポートします。他のタイプ(数値タワーかどうかに関わらず)の動作は現在サポートされていません。混合型も定義されておらず、実装に依存します。入力データが混合型である場合、map()を使用して一貫した結果を保証することができます。 map(float、input_data)

あなたの問題


それが適切にいくつかの時間を動作していないので、あなたは文字列のため、この機能を使用するので、より良い私はあなたがカスタム関数を使用し示唆しています。私は私の下のコードで解決策を与える。

説明機能の中央値()


方法の一般的な「真ん中の2つの平均値」を使用してstatistics.median(データ)

戻る数値データの中央値(中央値)、。データが空の場合、StatisticsErrorが発生します。データはシーケンスまたは反復子にすることができます。

中央値は中央位置の堅牢な尺度であり、データの外れ値の影響を受けにくい。データポイントの数が奇数の場合、中央のデータポイントが返されます:あなたが数値のため、この機能を使用する場合、問題の

ソリューションは


ので、コードの下にこれを試してみてください、

def getMedian(numericValues): 
    theValues = sorted(numericValues) 

    if len(theValues) % 2 == 1: 
    return theValues[(len(theValues)+1)/2-1] 
    else: 
    lower = theValues[len(theValues)/2-1] 
    upper = theValues[len(theValues)/2] 
    return (float(lower + upper))/2 


print getMedian([0,1,2,3,4,5]) # output = 2.5 
あなたが使用中央値関数は、文字列のためのものである場合

ので、コードの下に

def medianFind(mystring): 
    return mystring[(len(mystring)-1)/2] #len returns the length of the string 

print medianFind("vmr") #prints m 

Iこれを試します私の答えが役に立つと願っています。
質問があればコメントしてください。

+0

エラーメッセージは、メディアン自体の計算ではなく、データタイプによるものです。あなたの答えはOPに答えません。 – eyllanesc

+0

こんにちは。 eyllanesc irst私の答えを示す私は別のものを使って解決策を出します。 –

+0

なぜ私の投票をダウンしてください。 –

-1

でいただきありがとうございます。

あなたはそれをソートする必要があるとちょうど中間の値をしたい、

list[math.floor(len(list)/2)]. 
+0

エラーメッセージは、メディアン自体の計算ではなく、データ型によるものです。あなたの答えはOP – eyllanesc

+0

@eyllanescには答えていませんが、.sort()を使って自分の比較メソッドをソートに使うことができます(特に、オブジェクトが外部ライブラリからインポートされている場合は__cmp__または__eq__を宣言するよりも簡単です)これが彼の問題を解決するのか?最終的に、私は彼が中央値を探しているという印象を受けており、彼の問題は彼が使用しているデータ型とnumpyのライブラリにあるが、中央値はあまりにも複雑ではないので、私は彼が手動で行うことを提案している私の方法はおそらくTypeErrorを解決するでしょう。 –

+0

リストが文字列だった場合、あなたのソリューションはその質問に答えますか?例えば、 'l = ['1'、 '2'、 '3'、 '4'] ' – eyllanesc

関連する問題