arr
形状(N, D, M, D)
がD
2 または 3の大きな numpy 配列があります。配列は、次元と次元でブロック化(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 行 2 列のマトリックスnp.linalg.det
に約 40us かかります。このフラグメントのパフォーマンスを改善するためのオプションは何ですか?