[Numpy-discussion] Re: help in improving data analysis code

gf gyromagnetic at gmail.com
Fri Nov 25 14:19:00 EST 2005

From: Francesc Altet <faltet at ca...>
Re: help in improving data analysis code
2005-11-25 07:32

>>A Divendres 25 Novembre 2005 16:27, Francesc Altet va escriure:
> >      print nn[argsort(abs(nn_c-nn_c.mean()),0)][:-int(sz*0.10),0]
>> Ups. I have had a confusion. This should work better ;-)
>>      print nn[argsort(abs(nn-nn.mean()),0)][:-int(sz*0.10),0]

Hi Francesc,
Thank you for the suggestions.
Your code is performing a different task than mine was. In particular,
I believe it does not 're-mean' the data after removing each point.
However, based on the great ideas from your code, I now have the
function below that looks to be more efficient (although I haven't
measured it).

Any additional suggestions are appreciated.



from numarray import argsort, floor, absolute

def eliminate_outliers(data,frac):
    num_to_eliminate = int(floor(data.size())*frac)
    for i in range(num_to_eliminate):
        data = data[argsort(absolute(data-data.mean()),0)][:-1,0]
    return data

if __name__ == "__main__":
    from numarray.mlab import rand
    sz = 100
    nn = rand(sz,1)
    nn[:10] = 20*rand(10,1)
    nn[sz-10:] = -20*rand(10,1)
    print eliminate_outliers(nn,0.10)

More information about the NumPy-Discussion mailing list