'''
TL;DR I found no other way to do this better so here is the handmade function for it.
There is no direct way to find adjoint of a matrix.
Also there is no Numpy function that does this kind of thing so you have to go
a little offroad from here :)
Following is the formula for finding it in Python:-
Adj(matrix) = (cofactor(A))Transpose
After hours of research not finding anything, made my own adjoint function with
a little help from a github repo (link attatched in Source).
Hope I have saved your time and you didn't have to go through the trouble that I have suffered for such a simple looking problem.
Thanks Enjoy!
'''
import numpy as np
def adjoint(matrix): #matrix is a numpy 3x3 array and if any other stuff is passed it will throw an error.
mtrx = matrix.ravel() #ravel() converts 2d array to 1d. Just to make things easier.
A= +((mtrx[4]*mtrx[8])-(mtrx[5]*mtrx[7]))
B= -((mtrx[3]*mtrx[8])-(mtrx[5]*mtrx[6]))
C= +((mtrx[3]*mtrx[7])-(mtrx[6]*mtrx[4]))
D= -((mtrx[1]*mtrx[8])-(mtrx[2]*mtrx[7]))
E= +((mtrx[0]*mtrx[8])-(mtrx[2]*mtrx[6]))
F= -((mtrx[0]*mtrx[7])-(mtrx[1]*mtrx[6]))
G= +((mtrx[1]*mtrx[5])-(mtrx[2]*mtrx[4]))
H= -((mtrx[0]*mtrx[5])-(mtrx[2]*mtrx[3]))
I= +((mtrx[0]*mtrx[4])-(mtrx[1]*mtrx[3]))
#Convert back to 3x3 matrix format
cofactor = np.array([[A, B, C],
[D, E, F],
[G, H, I]])
#Formula for adjoint
adjnt = cofactor.T
return adjnt