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

154
Vistas
Indexación extraña usando numpy

Tengo una variable, x, que tiene la forma (2,2,50,100).

También tengo una matriz, y, que es igual a np.array([0,10,20]). Sucede algo extraño cuando indexo x[0,:,:,y].

 x = np.full((2,2,50,100),np.nan) y = np.array([0,10,20]) print(x.shape) (2,2,50,100) print(x[:,:,:,y].shape) (2,2,50,3) print(x[0,:,:,:].shape) (2,50,100) print(x[0,:,:,y].shape) (3,2,50)

¿Por qué el último da como resultado (3,2,50) y no (2,50,3)?

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

0

Se llama combining advanced and basic indexing . Al combining advanced and basic indexing , numpy realiza la indexación en la indexación avanzada primero y subespacia/concatena el resultado a la dimensión de la indexación básica.

Ejemplo de documentos:

Sea x.shape (10,20,30,40,50) y suponga que ind_1 e ind_2 pueden transmitirse a la forma (2,3,4). Entonces x[:,ind_1,ind_2] tiene forma (10,2,3,4,40,50) porque el subespacio con forma (20,30) de X ha sido reemplazado por el subespacio (2,3,4) de los índices Sin embargo, x[:,ind_1,:,ind_2] tiene forma (2,3,4,10,30,50) porque no hay un lugar inequívoco para colocar en el subespacio de indexación, por lo que se agrega al principio . Siempre es posible usar .transpose() para mover el subespacio a cualquier lugar deseado. Tenga en cuenta que este ejemplo no se puede replicar usando take.

entonces, en x[0,:,:,y] , 0 e y son indexación avanzada. Se transmiten juntos para producir la dimensión (3,) .

 In [239]: np.broadcast(0,y).shape Out[239]: (3,)

Este (3,) se une al comienzo de la 2.ª y 3.ª dimensión para formar (3, 2, 50)

Para ver que la primera y la última dimensión realmente se transmiten juntas, puede intentar cambiar 0 a [0,1] para ver el error de transmisión.

 print(x[[0,1],:,:,y]) Output: IndexError Traceback (most recent call last) <ipython-input-232-5d10156346f5> in <module> ----> 1 x[[0,1],:,:,y] IndexError: shape mismatch: indexing arrays could not be broadcast together with shapes (2,) (3,)
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