Numpyは、 np.absolute
とエイリアス np.abs
の両方を提供します
from .numeric import absolute as abs
pythonの禅 に明らかに違反しているようです:
1つ-できれば1つだけ-明白な方法が必要です。
だから私はこれには十分な理由があると推測しています。
私は個人的にほとんどすべてのコードでnp.abs
を使用しており、たとえばStack Overflowでの np.abs vs np.absolute の検索結果の数は、圧倒的多数が同じことをしているようです(2130対244ヒット)。
コードでnp.absolute
よりもnp.abs
を優先的に使用する必要がある理由はありますか、それとも単に「標準」のnp.abs
を使用する必要がありますか?
おそらく、同じ名前の組み込み関数 abs
があるためです。 np.amax
、np.amin
、およびnp.round_
についても同様です。
NumPy関数のエイリアス abs
、min
、max
、round
はトップレベルパッケージでのみ定義されます。
したがって、np.abs
とnp.absolute
は完全に同一です。どちらを使用してもかまいません。
短い名前にはいくつかの利点があります。短い名前であり、組み込みのPython関数と同じ名前であるため、Pythonプログラマーに知られています。そのため、エンドユーザーは簡単に入力できます(入力しにくく、覚えにくい)。
ただし、別の名前を付ける理由もあります。NumPy(またはより一般的にはサードパーティのパッケージ)には、Python関数abs
、min
などが必要な場合があります。 Python関数に引き続きアクセスします。パッケージの最上位レベルで「ショートカット」を公開します。注:この場合、使用できるオプションは異なる名前だけではありません。Pythonモジュールを使用して回避することができます builtins
組み込み関数をシャドウした場合、組み込み関数にアクセスします。名前で。
また、元々は長い名前の関数absolute
(など)のみが含まれ、後で短いエイリアスのみが追加されたという場合もあります(ただし、それは純粋な推測です)。大規模でよく使用されるライブラリであるNumPy開発者は、物を軽く削除したり廃止したりしません。したがって、古いコード/スクリプトを削除すると、古いコード/スクリプトが破損する可能性があるため、長い名前をそのまま残すことができます。