我在 Numpy 的手册中读到有det(M)
可以计算行列式的函数。det()
但是,我在 Numpy 中找不到该方法。
顺便说一句,我使用 Python 2.5。Numpy 应该没有兼容性问题。
您可以numpy.linalg.det
用来计算数组的行列式:
In [1]: import numpy
In [2]: M = [[1, 2], [3, 4]]
In [3]: print numpy.linalg.det(M)
Out[3]: -2.0000000000000004
对于大型数组,使用 时可能会发生下溢/溢出numpy.linalg.det
,或者您可能会得到inf
或-inf
作为答案。
在许多这些情况下,您可以使用numpy.linalg.slogdet
(请参阅文档):
sign, logdet = np.linalg.slogdet(M)
其中sign
是行列式的符号和logdet
对数。您可以简单地通过以下方式计算行列式:
det = np.exp(logdet)
对于稀疏矩阵(二维数组),我强烈推荐另一种基于 LU 分解的方法。