Pregunta

como valor de reemplazo para otro dentro de una operación con matrices, o cómo buscar dentro de una matriz y reemplazar un valor por otro

por ejemplo:

array ([[NaN, 1., 1., 1., 1., 1., 1.]
       [1., NaN, 1., 1., 1., 1., 1.]
       [1., 1., NaN, 1., 1., 1., 1.]
       [1., 1., 1., NaN, 1., 1., 1.]
       [1., 1., 1., 1., NaN, 1., 1.]
       [1., 1., 1., 1., 1., NaN, 1.]
       [1., 1., 1., 1., 1., 1., NaN]])

donde puede reemplazar NaN por 0. gracias por cualquier respuesta

¿Fue útil?

Solución

Podrías hacer esto:

import numpy as np
x=np.array([[np.NaN, 1., 1., 1., 1., 1., 1.],[1., np.NaN, 1., 1., 1., 1., 1.],[1., 1., np.NaN, 1., 1., 1., 1.], [1., 1., 1., np.NaN, 1., 1., 1.], [1., 1., 1., 1., np.NaN, 1., 1.],[1., 1., 1., 1., 1., np.NaN, 1.], [1., 1., 1., 1., 1., 1., np.NaN]])
x[np.isnan(x)]=0

np.isnan (x) devuelve una matriz booleana que es True donde x es NaN . x [boolean_array] = 0 emplea the numpybook .

Otros consejos

en estos días hay una función especial:

a = numpy.nan_to_num(a)

Aquí está la matriz de ejemplo en la pregunta:

import numpy as np
a = np.where(np.eye(7), np.nan, 1)

Puede usar numpy.where y numpy.isnan funciona para crear una nueva matriz b :

b = np.where(np.isnan(a), 0, a)

O utilice una función in situ para modificar directamente la matriz a :

np.place(a, np.isnan(a), 0)  # returns None
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top