【发布时间】:2010-10-02 12:39:18
【问题描述】:
我在 Numpy 的手册中看到有函数 det(M) 可以计算行列式。但是,我在 Numpy 中找不到 det() 方法。
顺便说一下,我使用的是 Python 2.5。 Numpy 应该没有兼容性问题。
【问题讨论】:
我在 Numpy 的手册中看到有函数 det(M) 可以计算行列式。但是,我在 Numpy 中找不到 det() 方法。
顺便说一下,我使用的是 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 (see documentation):
sign, logdet = np.linalg.slogdet(M)
其中sign 是符号,logdet 是行列式的对数。您可以简单地通过以下方式计算行列式:
det = np.exp(logdet)
对于稀疏矩阵(二维数组),我强烈推荐another approach based on LU decomposition。
【讨论】: