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

265
Vistas
Comportamiento de concatenación numpy. Cómo concatenar ejemplo correctamente

Tengo la siguiente matriz multidimensional:

 windows = array([[[[[[0., 0.], [1., 0.]], [[0., 0.], [1., 0.]], [[0., 0.], [1., 0.]]], [[[0., 1.], [0., 0.]], [[0., 1.], [0., 0.]], [[1., 0.], [0., 0.]]], [[[1., 0.], [0., 0.]], [[0., 1.], [0., 0.]], [[0., 1.], [0., 0.]]]]]]) print(windows.shape) (1, 1, 3, 3, 2, 2) # (n, d, a, b, c, c) w = a * (c*c), h = b * (c*c)

Quiero obtener la siguiente matriz resultante:

 mask = array([[ [[0., 0., 0., 0., 0., 0.], [1., 0., 1., 0., 1., 0.], [0., 1., 0., 1., 1., 0.], [0., 0., 0., 0., 0., 0.], [1., 0., 0., 1., 0., 1.], [0., 0., 0., 0., 0., 0.]] ]], dtype=np.float32) print(mask.shape) (1, 1, 6, 6) # (n, d, w, h)

Básicamente, quiero comprimir las últimas 4 dimensiones en una matriz bidimensional para que la forma final se convierta en (n, d, w, h), en este caso (1, 1, 6, 6).

np.concatenate(windows, axis = 2) , pero no se concatenó a lo largo de la segunda dimensión y se redujo por alguna razón primero (aunque configuré axis = 2) 'n' dimensión.

Información adicional:
Windows es el resultado del siguiente fragmento de código

 windows = np.lib.stride_tricks.sliding_window_view(arr, (c, c), axis (-2,-1), writeable = True) # arr.shape == mask.shape windows = windows[:, :, ::c, ::c] # these are non-overlapping windows of arr with size (c,c) windows = ... # some modifications of windows

Ahora quiero construir a partir de esta matriz de ventanas con la forma de arr.shape , esta matriz se llama mask en el ejemplo anterior. La remodelación simple no funciona porque devuelve los elementos en un orden incorrecto.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

IIUC, desea fusionar las dimensiones 2+4 y 3+5, una manera fácil sería intercambiar los swapaxes 4 y 5 (o -3 y -2), y reshape a (1,1,6,6):

 windows.swapaxes(-2,-3).reshape(1,1,6,6)

producción:

 array([[[[0., 0., 0., 0., 0., 0.], [1., 0., 1., 0., 1., 0.], [0., 1., 0., 1., 1., 0.], [0., 0., 0., 0., 0., 0.], [1., 0., 0., 1., 0., 1.], [0., 0., 0., 0., 0., 0.]]]])
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