我想写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
答案 0 :(得分:2)
这称为monkey patching。它可能适用于这种特殊情况,但它会使您的程序难以遵循,因为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()
。