Numpy fornece maneiras eficientes de justificar as matrizes usando funções vetorizadas, oferecendo o desempenho aprimorado e a simplicidade de código em comparação com os loops tradicionais e [&] []
Esta função justifica uma matriz 2D ao longo do eixo e lateral especificados (esquerda, direita, para cima, para baixo). Ele funciona identificando elementos diferentes de zero usando máscara, classificando-os usando a classificação, deslizando a máscara se justificando para cima ou para a esquerda e, finalmente, substituindo a matriz original com os valores justificados. [3,0,4,0], [5,0,6,0], [0,7,0,8]]) # Capa à esquerda coberto_left = justify (a, eixo = 1, lado = 'esquerda') Print ("Array original:") Imprimir (a) print ("\ \ NCovered à esquerda:") print (coberto_left)
Array original: [[1 0 2 0] [3 0 4 0] [5 0 6 0] [0 7 0 8]] Coberta à esquerda: [[1 2 0 0] [3 4 0 0] [5 6 0 0] [7 8 0 0]]
import numpy as np def justify(a, invalid_val=0, axis=1, side='left'): if invalid_val is np.nan: mask = ~np.isnan(a) else: mask = a!=invalid_val justified_mask = np.sort(mask,axis=axis) if (side=='up') | (side=='left'): justified_mask = np.flip(justified_mask,axis=axis) out = np.full(a.shape, invalid_val) if axis==1: out[justified_mask] = a[mask] else: out.T[justified_mask.T] = a.T[mask.T] return out
para justificar uma matriz n-dimensional, a seguinte função pode ser usada:
Esta função suporta cenários mais complexos, justificando uma matriz n-dimensional ao longo de um eixo arbitrário e para a 'frente' ou 'fim' da matriz.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3