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

136
Vistas
Elimine toda la matriz 3d si contiene algún nan

Tengo un conjunto de imágenes representadas por un ndarray 3d. En resumen, lo que quiero hacer es eliminar una imagen completa si alguno de sus valores de píxel es un nan. Imagina que tenemos el siguiente ndarray:

 a = np.arange(18).reshape(3, 2, 3) a = 1.0 * a a[0][0][1] = np.nan a[1][0][0] = np.nan a [[[ 0. nan 2.] [ 3. 4. 5.]] [[nan 7. 8.] [ 9. 10. 11.]] [[12. 13. 14.] [15. 16. 17.]]]

Ahora lo que quiero obtener es una función que dado que ndarray devuelve True, True, False. Para finalmente usar np.delete.

He probado lo siguiente, que funciona:

 np.delete(a, [np.isnan(image.flatten()).any() for image in a], axis=0) array([[[12., 13., 14.], [15., 16., 17.]]]))

Sin embargo, me cuesta creer que no haya una función en numpy que sea más eficiente, y dado que tengo muchas imágenes, me gustaría optimizarla tanto como sea posible.

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

0

Como ya respondió Michael Szczesny, una forma más pitónica sería:

 filtered_images=a[~np.isnan(a).any(axis=(2,1))]

Si ese fragmento de código es difícil de entender, considere extraer cada imagen con un bucle for de la siguiente manera:

 filtered_images=list() for value in a: if(np.isnan(value).any()!=True): filtered_images.append(value)

¡Ambos enfoques deberían darte un resultado similar!

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