2016-10-28 6 views
0

私は非常に小さなp値(数百の小数点以下)を使って作業していますが、リストの中で最小のものを検出しようとしています。 Pythonがそれらの多くをゼロとして検出するので、ログするとゼロ除算エラーが発生するようです。これを避けるためにPython - 非常に小さな値(数百の小数点)のログをとるときゼロ除算エラーを避ける

、私はこのコードを書かれている:もちろん

smallest_val = min(np.array(p_value)[np.array(p_value) > 0]) 
for i in range(len(p_value)): 
    if p_value[i] == 0: 
    p_value[i] = smallest_val 

p_value_log = [] 
for i in p_value: 
    b = log(i) 
    p_value_log.append(b) 

をいくつかの小さなp値は、その後smallest_valに等しいと私は最小を識別できないように、これは私の問題を解決していません。これについて最善の方法を考えてみましょうか?あなたはまだあなたの代替品を識別できるようにする代わりにsmallest_valで0を置き換えるの

+0

例外が発生した場合に、例外を捕捉して疑似的な値を与えることはできませんか? –

+0

私は例外をキャッチすることができますが、どのように準無限の値を提供するのですか?申し訳ありませんが、基本的な質問のように聞こえる場合は、私はPythonを初めて使用しています – CenCG

答えて

0

smallest_val/2またはsmallest_valと0の間に何か他のものに置き換えます。

+0

問題は、smallest_valは既にPythonが非ゼロとして受け入れることになるので、2で割り算すると、Pythonは値がゼロだと考えていることです。 – CenCG

+0

どうしてわかるの?あなたのコードは配列内の最小でない0の値を見つけています。 –

+0

同じコードを別のデータセットに使用する場合は、それを比較しているセットからそれほど広範ではないので、私はすべてのp値をプロットすることができ、最小のものはすでに数百の小数点を持っています – CenCG

関連する問題