Teste eficientemente linhas e colunas da matriz com numpy

Estou tentando remover a linha ie a coluna i quando ambas a linha ie coluna i contém todos os 0s. Por exemplo, neste caso, podemos ver que a linha 0 é toda zeros e a coluna 0 é toda zeros e, portanto, a linha e a coluna 0 são removidas. O mesmo acontece com os pares 2 e 4. da coluna da linha 1. A linha 1 é todos os zeros, mas a coluna 1 não é, portanto, nem são removidos.

[0,0,0,0,0]
[0,1,0,1,0]
[0,0,0,0,0]
[0,0,0,0,0]
[0,0,0,0,0]

se tornaria

[1,1]
[0,0]

Outro exemplo:

[0,0,1,0,0,1]
[0,0,0,0,0,0]
[0,0,0,0,0,0]
[0,0,0,0,0,0]
[0,0,0,0,0,0]
[0,0,1,0,1,0]

mudaria para:

[0,1,0,1]
[0,0,0,0]
[0,0,0,0]
[0,1,1,0]

Este é o código que estou usando para calcular:

def remove(matrix):
    for i, x in reversed(list(enumerate(matrix))):
        if np.all(matrix == 0, axis=0)[i] and np.all(matrix == 0, axis=1)[i]:
            matrix = np.delete(matrix,i,axis=0)
            matrix = np.delete(matrix,i,axis=1)
    return matrix

Após o teste, esta linha está demorando muito tempo:

if np.all(matrix == 0, axis=0)[i] and np.all(matrix == 0, axis=1)[i]:

Existe uma maneira mais apropriada de testar uma linha e coluna dessa maneira? A matriz que estou usando é uma matriz binária esparsa. Eu não estou usando nenhuma classe de matriz esparsa apenas ndarray.

questionAnswers(2)

yourAnswerToTheQuestion