【发布时间】:2014-09-11 12:39:45
【问题描述】:
假设您有一个 numpy 矩阵数组,例如维数 (n,m,m) 的数组。将其视为 n 个矩阵,每个矩阵的大小为 mxm。有没有办法(不使用循环)一次性计算每个矩阵的行列式?
【问题讨论】:
-
为什么这个问题被否决了?我发现这个问题和答案非常有用。
假设您有一个 numpy 矩阵数组,例如维数 (n,m,m) 的数组。将其视为 n 个矩阵,每个矩阵的大小为 mxm。有没有办法(不使用循环)一次性计算每个矩阵的行列式?
【问题讨论】:
你可以使用numpy.linalg.det计算numpy数组的行列式,如下所示:
import numpy as np
N = 10
M = 4
# Generate N random MxM arrays
arrays = np.array([np.random.random((M,M)) for _ in range(N)])
dets = np.linalg.det(arrays)
print(dets)
# array([-0.20353081, 0.01632881, -0.17733447, -0.01518313, -0.23457492,
# 0.00284906, 0.16210605, 0.03887231, 0.07726804, -0.05107936])
在上面的示例中,我有 10 个大小为 4x4 的矩阵(作为示例随机生成)。 dets 是一个由 10 个数字组成的 numpy 数组,你的决定因素。
【讨论】:
在 numpy 中有一个名为“linalg.det”的函数:
举例:
import numpy as np
m = np.array([[-2,2,-3],[-1,1,3],[2,0,-1]])
np.linalg.det(m)
在此处查看 linalg.det 的文档: http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.det.html
【讨论】: