Search code examples
pythonnumpymultidimensional-arraytruncation

joint conditional truncation for ndarray


Given a 2-dim numpy array

array([[-1.00, 1.00 ],
       [-2.00, 2.00 ],
       [ 2.00, 3.00 ],
       [ 1.00, 3.00 ],
       [-4.00,-3.00]])

I wish to retrieve the rows that both exceed a give value. That is, say all values larger or equal to one. This would be the desired output.

array([[ 2.00, 3.00 ],
       [ 1.00, 3.00 ]])

For a one dimensional array it can be done directly like

sample[sample >=1]

However, it doesn't work with an arrays of dim > 1. The syntax above also works for pandas dataframes but I don't want to convert everything to a dataframe in order to do the truncation.

Is there an elegant way to do that? Thx for your help.


Solution

  • You can use np.array.all(axis=1):

    >>> sample[(sample >= 1).all(axis=1)]
    array([[2., 3.],
           [1., 3.]])