Ich habe ein Array A
deren Form (N, N, K)
und würde ein anderes Array B
mit der gleichen Form, wo B[:, :, i] = np.linalg.inv(A[:, :, i])
berechnen möge.Compute inverse 2D-Arrays entlang der dritten Achse in einem 3D-Array ohne Schleifen
Als Lösungen, ich sehe map
und for
Schleifen, aber ich frage mich, ob numpy
eine Funktion, dies zu tun gibt (ich habe np.apply_over_axes
versucht, aber es scheint, dass es nur 1D-Array verarbeiten kann).
mit einem for
loop:
B = np.zeros(shape=A.shape)
for i in range(A.shape[2]):
B[:, :, i] = np.linalg.inv(A[:, :, i])
mit map
:
B = np.asarray(map(np.linalg.inv, np.squeeze(np.dsplit(A, A.shape[2])))).transpose(1, 2, 0)
Wow, ich hätte nie gedacht, dass "inv" übertragbar war, aber jetzt, wo ich darüber nachdenke, warum nicht! Gute Arbeit, Herr/Frau! –
Tatsächlich habe ich die 'inv' Dokumentation zu schnell gelesen! – floflo29