我有一个大的 numpy 数组,形状arr
为两个或三个。数组可以被认为是在和维度中被块在一起的矩阵块。我希望采用这些矩阵中的每一个的行列式:(N, D, M, D)
D
(D,D)
N
M
(D,D)
out = np.empty((N,M))
for i in xrange(N):
for j in xrange(M):
out[i,j] = np.linalg.det(arr[i,:,j,:])
唯一的问题是它np.linalg.det
不会对小矩阵进行特殊处理,每个块的完整 BLAS 调用和 LU 分解也是如此。事实上,在我最近的 Core i7 系统上,一个 2 x 2 矩阵np.linalg.det
需要大约 40us。我有哪些方法可以提高这个片段的性能?