tags:

views:

502

answers:

1

hello all, as a replacement value for another within an operation with arrays, or how to search within an array and replace a value by another

for example:

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

where it can replace NaN by 0. thanks for any response

+5  A: 

You could do this:

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) returns a boolean array which is True wherever x is NaN. x[ boolean_array ] = 0 employs fancy indexing to assign the value 0 wherever the boolean array is True.

For a great introduction to fancy indexing and much more, see also the numpybook.

unutbu
NameError: name 'x' is not defined not work
ricardo
@ricardo: Let x be your numpy array.
unutbu
hi, excellent response, thanks
ricardo