Python: Justificando a matriz NumPy

Por favor, sou um pouco novo emPython e foi legal, eu poderia comentar que python é muito sexy até que eu precise mudar o conteúdo de uma matriz 4x4 que eu quero usar na construção de uma demo de 2048 do jogo.aqui Eu tenho essa função

def cover_left(matrix):
        new=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]
        for i in range(4):
             count=0
             for j in range(4):
                if mat[i][j]!=0:
                    new[i][count]=mat[i][j]
                    count+=1
        return new

É assim que essa função faz se você chamar assim

cover_left([
              [1,0,2,0], 
              [3,0,4,0], 
              [5,0,6,0], 
              [0,7,0,8]
          ])

Ele cobrirá os zeros à esquerda e produzirá

[  [1, 2, 0, 0],
   [3, 4, 0, 0],
   [5, 6, 0, 0],
   [7, 8, 0, 0]]

Por favor, preciso de alguém para me ajudar com umnumpy maneira de fazer isso, que acredito ser mais rápida e exigir menos código (estou usando em algo de pesquisa aprofundada) e, mais importante, a implementação decover_up, cover_down e

`cover_left`.
`cover_up`
    [  [1, 7, 2, 8],
       [3, 0, 4, 0],
       [5, 0, 6, 0],
       [0, 0, 0, 0]]
`cover_down`
    [  [0, 0, 0, 0],
       [1, 0, 2, 0],
       [3, 0, 4, 0],
       [5, 7, 6, 8]]
`cover_right`
    [  [0, 0, 1, 2],
       [0, 0, 3, 4],
       [0, 0, 5, 6],
       [0, 0, 7, 8]]

Desde já, obrigado.

questionAnswers(2)

yourAnswerToTheQuestion