47

我在 Numpy 的手册中读到有det(M)可以计算行列式的函数。det()但是,我在 Numpy 中找不到该方法。

顺便说一句,我使用 Python 2.5。Numpy 应该没有兼容性问题。

4

2 回答 2

74

您可以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
于 2009-01-20T18:35:26.310 回答
31

对于大型数组,使用 时可能会发生下溢/溢出numpy.linalg.det,或者您可能会得到inf-inf作为答案。

在许多这些情况下,您可以使用numpy.linalg.slogdet请参阅文档):

sign, logdet = np.linalg.slogdet(M)

其中sign是行列式的符号和logdet对数。您可以简单地通过以下方式计算行列式:

det = np.exp(logdet)

对于稀疏矩阵(二维数组),我强烈推荐另一种基于 LU 分解的方法

于 2013-10-11T11:37:57.350 回答