Domanda

come valore sostitutivo per un altro all'interno di un'operazione con array o come cercare all'interno di un array e sostituire un valore con un altro

ad esempio:

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]])

dove può sostituire NaN con 0. grazie per qualsiasi risposta

È stato utile?

Soluzione

Puoi farlo:

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) restituisce un array booleano che è True ovunque x è NaN . x [boolean_array] = 0 utilizza indicizzare la fantasia True .

Per un'ottima introduzione all'indicizzazione fantasiosa e molto altro, vedi anche il numpybook .

Altri suggerimenti

in questi giorni c'è la funzione speciale:

a = numpy.nan_to_num(a)

Ecco la matrice di esempio nella domanda:

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

Puoi utilizzare numpy.where e numpy.isnan per creare un nuovo array b :

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

Oppure usa una funzione sul posto per modificare direttamente l'array a :

np.place(a, np.isnan(a), 0)  # returns None
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top