Tengo una matriz NxM en numpy de la que me gustaría tomar el registro, e ignoro las entradas que fueron negativas antes de tomar el registro. Cuando tomo el registro de entradas negativas, devuelve -Inf, así que tendré una matriz con algunos valores -Inf como resultado. Luego quiero resumir las columnas de esta matriz, pero ignorando los valores de -Inf, ¿cómo puedo hacer esto?Ignorando -Inf valores en matrices utilizando numpy/scipy en Python
Por ejemplo,
mylogarray = log(myarray)
# take sum, but ignore -Inf?
sum(mylogarray, 0)
Sé que hay nansum y necesito el equivalente, algo así como infsum.
Gracias.
¿puede por favor ampliar esto? No entiendo el ejemplo. ¿Cómo inicializaste la matriz enmascarada de arriba? – user248237dfsf
@ user248237 - Las funciones 'numpy.ma.log', etc, crearán automáticamente una matriz enmascarada en la que se enmascara todo lo que da como resultado un' inf' o 'nan'. Sin embargo, esto es un poco menos explícito, por lo que puede hacer esto: 'a = np.ma.masked_where (a == np.inf, a)', y luego simplemente 'b = np.log (a)' (o cualquier otra función). Alternativamente, puede evitar matrices enmascaradas y simplemente hacer 'np.log (a [a! = Np.inf]). Sum()' (Puede indexar por matrices booleanas, es mucho más limpio y más rápido que el basado en 'filtro' respuestas.) –
@ user248237 No inicialicé la matriz enmascarada explícitamente. 'a' es solo una matriz normal, no enmascarada. 'ma.log' enmascara todos los valores donde el logaritmo (real) no está definido. Entonces, la matriz enmascarada resultante 'b' se trata aproximadamente como si las entradas enmascaradas no estuvieran allí. – Philipp