Python: Justificación de la matriz NumPy

Por favor, soy un poco nuevo paraPython y ha sido agradable, podría comentar que Python es muy sexy hasta que necesito cambiar el contenido de una matriz 4x4 que quiero usar para construir una demostración del juego en 2048.aquí Tengo esta funcion

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

Esto es lo que hace esta función si la llamas así

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

Cubrirá los ceros a la izquierda y producirá

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

Por favor, necesito que alguien me ayude con unnumpy creo que será más rápido y requerirá menos código (lo estoy usando en un algoritmo de búsqueda de profundidad primero) y, lo que es más importante, la implementación decover_up, cover_down y

`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]]

Gracias por adelantado.

Respuestas a la pregunta(2)

Su respuesta a la pregunta