1. ホーム
  2. python

[解決済み] numpy.product vs numpy.prod vs ndarray.prod

2022-03-04 21:52:06

質問

Numpyのドキュメントを読んでいるのですが、どうやら、関数 np.prod(...) , np.product(...)ndarray メソッド a.prod(...) はすべて等価です。

スタイル/読みやすさとパフォーマンスの両方の観点から、使用するのに適したバージョンはありますか?また、異なるバージョンを使用することが望ましい状況はありますか?もしそうでなければ、同じ操作を行うのに、なぜ3つの異なる、しかし非常によく似た方法があるのでしょうか?

どのように解決する?

本日(1.15.0)のmasterブランチの時点では。 np.product を使用するだけです。 np.prod であり、いずれは非推奨となる可能性があります。参照 MAINT: エイリアスされた関数の重複した実装を削除しました。#10653 .

そして np.prodndarray.prod を呼び出すことになります。 umath.multiply.reduce ということで、両者の間に違いはありません。 のように NumPy の配列に加えて、(Python のリストのような)型があります。

それ以前は、NumPy 1.14.2のように、ドキュメントでは np.productnp.prod は同じでしたが、Paragが言うように実装が重複しているためバグがありました。 #10651 :

>>> class CanProd(object):
        def prod(self, axis, dtype, out): return "prod"  
>>> np.product(CanProd())
<__main__.CanProd object at 0x0000023BAF7B29E8>
>>> np.prod(CanProd())
'prod'

要するに、今は同じで、好意的なんですね np.prod オーバー np.product 後者は非推奨となる可能性のあるエイリアスであるため。