Я хотел бы применить функцию к каждой из матриц 3x3 в моем массиве (6890,6890,3,3). До сих пор я пытался использовать векторизацию на меньшем примере и с более простой функцией, которая не сработала.
def myfunc(x):
return np.linalg.norm(x)
m = np.arange(45).reshape(5,3,3)
t = m.shape[0]
r = np.zeros((t, t))
q = m[:,None,...] @ m.swapaxes(1,2) # m[i] @ m[j].T
f = np.vectorize(q, otypes=[np.float])
res = myfunc(f)
Является ли векторизация правильным подходом для эффективного решения этой проблемы или мне следует попробовать что-то еще? Я также изучил numpy.apply_along_axis
, но это относится только к 1D-подмассивам.