Ho due array numpy e sto cercando di dividerne uno con l'altro e allo stesso tempo, voglio assicurarmi che le voci in cui il divisore è 0, debbano essere sostituite con 0.numpy: valore non valido rilevato in true_divide
Quindi, faccio qualcosa di simile:
log_norm_images = np.where(b_0 > 0, np.divide(diff_images, b_0), 0)
Questo mi dà un avvertimento tempo di esecuzione di:
RuntimeWarning: invalid value encountered in true_divide
Ora, ho voluto vedere cosa stava succedendo e ho fatto la a seguire:
xx = np.isfinite(diff_images)
print (xx[xx == False])
xx = np.isfinite(b_0)
print (xx[xx == False])
Tuttavia, entrambi restituiscono array vuoti, il che significa che tutti i valori negli array sono finiti. Quindi, non sono sicuro da dove provenga il valore non valido. Sto assumendo il controllo b_0> 0 nella funzione np.where si occupa della divisione per 0.
La forma dei due array è (96, 96, 55, 64) e (96, 96, 55, 1)
Perché 'xx' è' False' e un dict? – seequ
Penso che isfinite restituisca un array booleano. Quindi, sto cercando dei luoghi in cui i valori NON sono finiti. – Luca
Prova '[x per x in xx se x == False]'. Stai solo cercando di recuperare la chiave 'False' – seequ