2017-12-04 7 views
1

私はnumpyのライブラリをチェックしnumpyにおける標準偏差のために次の定義が見つかりました:なぜnumpy.std()はabs()を使用していますか?

std = sqrt(mean(abs(x - x.mean())**2)) 

なぜ使用abs()機能はありますか? - 数学的には、数値の2乗は定義ごとに正であるためです。

だから私は考えた:

abs(x - x.mean())**2 == (x - x.mean())**2 
+4

ドキュメントには、次のように書かれています。 '複素数の場合、stdは二乗する前に絶対値をとるので、結果は常に実数であり、非負であることに注意してください。 –

+0

@AlexRileyありがとうございます。それで、複雑ではない値に対して別の関数を使う方が良いでしょうか? –

+0

@KevinWallisおそらく、最初にプロファイルして問題があるかどうかを覚えておいてください。 – klutt

答えて

3

実数の平方は常に正であるが、これは複素数のために真実ではありません。

A非常に単純な例:j**2=-1

より複雑な(しゃれ意図)例:(3-2j)**2=(5-12j)ドキュメントから

:複素数のために、stdは前に絶対値をとる、ということ

注意結果が常に真で非負であるように二乗する。

注:数学はiを使用しながら Pythonは、虚数単位のためj使用。

関連する問題