web-dev-qa-db-ja.com

np.absoluteまたはnp.absを使用する必要がありますか?

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を使用する必要がありますか?

47
Jonas Adler

おそらく、同じ名前の組み込み関数 abs があるためです。 np.amaxnp.amin、およびnp.round_についても同様です。

NumPy関数のエイリアス absminmaxround はトップレベルパッケージでのみ定義されます。

したがって、np.absnp.absoluteは完全に同一です。どちらを使用してもかまいません。

短い名前にはいくつかの利点があります。短い名前であり、組み込みのPython関数と同じ名前であるため、Pythonプログラマーに知られています。そのため、エンドユーザーは簡単に入力できます(入力しにくく、覚えにくい)。

ただし、別の名前を付ける理由もあります。NumPy(またはより一般的にはサードパーティのパッケージ)には、Python関数absminなどが必要な場合があります。 Python関数に引き続きアクセスします。パッケージの最上位レベルで「ショートカット」を公開します。注:この場合、使用できるオプションは異なる名前だけではありません。Pythonモジュールを使用して回避することができます builtins 組み込み関数をシャドウした場合、組み込み関数にアクセスします。名前で。

また、元々は長い名前の関数absolute(など)のみが含まれ、後で短いエイリアスのみが追加されたという場合もあります(ただし、それは純粋な推測です)。大規模でよく使用されるライブラリであるNumPy開発者は、物を軽く削除したり廃止したりしません。したがって、古いコード/スクリプトを削除すると、古いコード/スクリプトが破損する可能性があるため、長い名前をそのまま残すことができます。

41
MSeifert