Code: Alles auswählen
import numpy as np
n = 9
# irgendein n x n - array
A = np.array([np.random.randint(-n, n) for _ in range(n * n)]).reshape(n, n)
# eine Permutation
P = np.random.permutation(n)
B = ??? # was muss hier hin...
B[i, j] == -(A[P[i], i] + A[P[j], j]) + A[P[i], j] + A[P[j], i] # ...damit das hier gilt?
Als Schleife ist das kein Problem, aber langsam. Und es ist so langsam, dass es ein Problem ist. Und bestimmt geht es geschickt mit numpy, aber ich kenne mich nicht genug aus.
Eigentlich muss ich noch ein Matrix dazuaddieren, mit folgender Eigenschaft:
Code: Alles auswählen
C[i, j] == 2 * D[i, j] * E[P[i], P[j]]
Code: Alles auswählen
C = 2 * D * E[P][:, P]