• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Pruebas Online
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

184
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
about 3 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]]
about 3 years ago · Santiago Trujillo Denunciar

0

Por diversión (porque la reshape anidada será más eficiente), puede usar einsum en la matriz de entrada y una matriz ones tenga dimensiones adicionales para crear una matriz multidimensional con las dimensiones en un orden ideal para reshape a 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]])
about 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda