¿Cuál podría ser la causa del ‘valor inválido encontrado en less_equal’ en números?

Experimenté un RuntimeWarning

RuntimeWarning: invalid value encountered in less_equal 

Generado por esta línea de código mío:

 center_dists[j] <= center_dists[i] 

Tanto center_dists[j] como center_dists[i] son matrices numpy

¿Cuál podría ser la causa de esta advertencia?

Eso es más probable que ocurra debido a un np.nan en algún lugar de las entradas involucradas. Un ejemplo de ello se muestra a continuación:

 In [1]: A = np.array([4, 2, 1]) In [2]: B = np.array([2, 2, np.nan]) In [3]: A<=B RuntimeWarning: invalid value encountered in less_equal Out[3]: array([False, True, False], dtype=bool) 

Para todas aquellas comparaciones que involucran np.nan , daría como resultado False . Confirmémoslo para una comparación broadcasted . Aquí hay una muestra:

 In [1]: A = np.array([4, 2, 1]) In [2]: B = np.array([2, 2, np.nan]) In [3]: A[:,None] <= B RuntimeWarning: invalid value encountered in less_equal Out[3]: array([[False, False, False], [ True, True, False], [ True, True, False]], dtype=bool) 

Observe la tercera columna en la salida que corresponde a la comparación que involucra el tercer elemento np.nan en B y que da como resultado todos los valores False .

Como seguimiento a la respuesta de Divakar y al comentario sobre cómo suprimir RuntimeWarning , una forma más segura es suprimirlos solo localmente with np.errstate() ( docs ): es bueno estar alerta en general cuando se comparan con np.nan False , e ignora la advertencia solo cuando esto es realmente lo que se pretende. Aquí para el ejemplo de OP:

 with np.errstate(invalid='ignore'): center_dists[j] <= center_dists[i] 

Al salir del bloque with , el manejo de errores se restablece a lo que era antes.

En lugar de invalid value encountered un invalid value encountered , también se pueden ignorar todos los errores pasando all='ignore' . Curiosamente, esto falta en los kwargs en los documentos para np.errstate() , pero no en los de np.seterr() . (Parece un pequeño error en los documentos np.errstate() ).