user7831701
user7831701

Reputation:

Removing "nan" values from a numpy array

I have a numpy array that has certain rows filled exclusively with "nan", i.e.:

 print(ar2[1560])
[ nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan
  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan]

What I need is to get rid of all such lines from this numpy array, without messing up with the order of my elements, i.e. maintain the sorting. I have tried the following:

ar3=ar2[:,~np.all(np.isnan(ar2))]

but this will only replace my "nan" with "False".

I have also tried the following as well:

ar3 = ar2[~np.isnan(ar2)]

but it converts my 2d numpyarray to a 1d numpyarray.

I am aware that a solution would be to convert my numpy array to a data frame, then drop the "nan" values and then convert it back to a numpy array, but I would like to know if there is a more direct approach, exclusively within the numpy package (and other than making a huge "for" loop and iterating over everything). Thank you.

Upvotes: 2

Views: 3046

Answers (1)

user7831701
user7831701

Reputation:

Nevermind, found it:

ar3=ar2[~np.isnan(ar2).any(axis=1)]

Thanks anyway

Upvotes: 4

Related Questions