Optimierte binäre Matrix umgekehrtPython

Python-Programme
Guest
 Optimierte binäre Matrix umgekehrt

Post by Guest »

Ich versuche, eine nicht-sparige Binärmatrix zu invertieren (mod 2). Ich versuche es mit sehr sehr großen Matriuren wie 100_000 bis 100_000 zu tun. Ich habe Bibliotheken wie Sympy, Numpy, Numba ausprobiert. Die meisten davon tun dies mit Floats und wenden MOD 2 bei jedem Schritt nicht an. Im Allgemeinen meldet Numpy die Determinante eines zufälligen binären invertierbaren Arrays der Größe 1000 von 1000 als Inf.
Diese Funktion ist auch schön, da ich auch dann den Rang sehen kann. < /p>

Code: Select all

def binary_inv(A):
n = len(A)
A = np.hstack((A.astype(np.bool_),np.eye(n,dtype=np.bool_)))
for i in range(n):
j = np.argmax(A[i:,i]) + i
if i!=j:
A[[i,j],i:] = A[[j,i],i:]
A[i,i]          = False
A[A[:,i],i+1:] ^= A[i:i+1,i+1:]
return A[:,n:]
Irgendwelche Gedanken darüber, dies so schnell wie möglich zu machen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post