У меня есть массив A
, форма которого (N, N, K)
и я хотел бы, чтобы вычислить другой массив B
с той же формой, где B[:, :, i] = np.linalg.inv(A[:, :, i])
.Вычисление обратной 2D-массивов вдоль третьей оси в 3D массив без петель
Как решения, я вижу map
и for
петель, но мне интересно, если numpy
предоставляет функцию, чтобы сделать это (я пробовал np.apply_over_axes
, но мне кажется, что он может обрабатывать только 1D массив).
с for
петли:
B = np.zeros(shape=A.shape)
for i in range(A.shape[2]):
B[:, :, i] = np.linalg.inv(A[:, :, i])
с map
:
B = np.asarray(map(np.linalg.inv, np.squeeze(np.dsplit(A, A.shape[2])))).transpose(1, 2, 0)
Ничего себе, я бы никогда не догадался, что 'inv' был доступен для трансляции, но теперь, когда я действительно об этом думаю, почему бы и нет! Хорошая работа, сэр/мадам! –
Действительно, я слишком быстро прочитал документацию 'inv'! – floflo29