M.det()
の代わりに書きたかったので、次のnumpy.linalg.det(M)
ようにしました。
numpy.matrix.det = numpy.linalg.det
そしてそれはうまくいきました。
この訴訟に対して何か言いたいことはありますか?
例:
import numpy as np
np.matrix.det = np.linalg.det
M = np.matrix([[1,2],[3,4]])
print M.det()
正しい出力:-2.0
これはモンキーパッチと呼ばれます。det
この特殊なケースでは機能するかもしれませんが、そのメソッドはプログラムにしか存在せず、どこにも文書化されていないため、プログラムを追跡するのが難しくなります。また、np.matrix
実装の詳細、具体的には純粋な Python クラスであり、すべてのクラスで機能するわけではありません。
>>> numpy.ndarray.det = numpy.linalg.det
------------------------------------------------------------
Traceback (most recent call last):
File "<ipython console>", line 1, in <module>
TypeError: can't set attributes of built-in/extension type 'numpy.ndarray'
私はこれに反対することをお勧めします。それはあなたのプログラムを読みやすく維持するのを難しくfrom numpy.linalg import det
しdet(A)
ますA.det()
。