Я хочу вычислить определитель m m подмассивов размерных массивов am m * n и хотел бы сделать это быстрым / более элегантным способом.Подход грубой силы работает:
import numpy as n
array=n.array([[[0.,1.,2.,3.],[2,1,1,0]],[[0.5, 0.5,2,2],[0.5,1,0,2]]])
detarray=n.zeros(4)
for i in range(4):
detarray[i]= n.linalg.det(array[:,:,i])
Я бы попытался сделать это с apply_along_axis, но я знаю, что это только для 1D-аргументов функции, и поэтому я предполагаю, что не могу заставить это работать.
Однако я думал, что apply_over_axes также должен работать:
n.apply_over_axes(n.linalg.det, array, [0,1])
, но это дает мне ошибку: «det () принимает ровно 1 аргумент (2 дано)»
Кто-нибудь знает, почему это не работает?Если этот тип вычисления действительно невозможен с apply_over_axes, есть ли лучший способ сделать это, а не цикл for?