Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

226
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda