Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

216
Visualizações
Repita los valores de una matriz en ambos ejes

Digamos que tengo esta matriz:

 array = np.array([[1,2,3],[4,5,6],[7,8,9]])

Devoluciones:

 123 456 789

¿Cómo debo hacer para que devuelva algo como esto?

 111222333 111222333 111222333 444555666 444555666 444555666 777888999 777888999 777888999
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Tendrías que usar np.repeat dos veces aquí.

 np.repeat(np.repeat(array, 3, axis=1), 3, axis=0) # [[1 1 1 2 2 2 3 3 3] # [1 1 1 2 2 2 3 3 3] # [1 1 1 2 2 2 3 3 3] # [4 4 4 5 5 5 6 6 6] # [4 4 4 5 5 5 6 6 6] # [4 4 4 5 5 5 6 6 6] # [7 7 7 8 8 8 9 9 9] # [7 7 7 8 8 8 9 9 9] # [7 7 7 8 8 8 9 9 9]]
over 4 years ago · Santiago Trujillo Relatório

0

Por diversión (porque la repeat anidada será más eficiente), puede usar einsum en la matriz de entrada y una matriz de ones que tenga dimensiones adicionales para crear una matriz multidimensional con las dimensiones en un orden ideal para reshape la forma 2D esperada:

 np.einsum('ij,ikjl->ikjl', array, np.ones((3,3,3,3))).reshape(9,9)

Siendo el método genérico:

 i,j = array.shape k = 3 # extra rows l = 3 # extra cols np.einsum('ij,ikjl->ikjl', a, np.ones((i,k,j,l))).reshape(i*k,j*l)

Producción:

 array([[1, 1, 1, 2, 2, 2, 3, 3, 3], [1, 1, 1, 2, 2, 2, 3, 3, 3], [1, 1, 1, 2, 2, 2, 3, 3, 3], [4, 4, 4, 5, 5, 5, 6, 6, 6], [4, 4, 4, 5, 5, 5, 6, 6, 6], [4, 4, 4, 5, 5, 5, 6, 6, 6], [7, 7, 7, 8, 8, 8, 9, 9, 9], [7, 7, 7, 8, 8, 8, 9, 9, 9], [7, 7, 7, 8, 8, 8, 9, 9, 9]])

Sin embargo, lo bueno de este método es que es bastante fácil cambiar el orden para obtener otros patrones o trabajar con dimensiones más altas.

Ejemplo con otros patrones:

 >>> np.einsum('ij,iklj->iklj', a, np.ones((3,3,3,3))).reshape(9,9) array([[1, 2, 3, 1, 2, 3, 1, 2, 3], [1, 2, 3, 1, 2, 3, 1, 2, 3], [1, 2, 3, 1, 2, 3, 1, 2, 3], [4, 5, 6, 4, 5, 6, 4, 5, 6], [4, 5, 6, 4, 5, 6, 4, 5, 6], [4, 5, 6, 4, 5, 6, 4, 5, 6], [7, 8, 9, 7, 8, 9, 7, 8, 9], [7, 8, 9, 7, 8, 9, 7, 8, 9], [7, 8, 9, 7, 8, 9, 7, 8, 9]]) >>> np.einsum('ij,kjil->kjil', a, np.ones((3,3,3,3))).reshape(9,9) array([[1, 1, 1, 4, 4, 4, 7, 7, 7], [2, 2, 2, 5, 5, 5, 8, 8, 8], [3, 3, 3, 6, 6, 6, 9, 9, 9], [1, 1, 1, 4, 4, 4, 7, 7, 7], [2, 2, 2, 5, 5, 5, 8, 8, 8], [3, 3, 3, 6, 6, 6, 9, 9, 9], [1, 1, 1, 4, 4, 4, 7, 7, 7], [2, 2, 2, 5, 5, 5, 8, 8, 8], [3, 3, 3, 6, 6, 6, 9, 9, 9]])
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda