[Numpy-discussion] Most efficient trim of arrays

Robert Kern robert.kern at gmail.com
Tue Dec 14 13:32:45 EST 2010


On Tue, Dec 14, 2010 at 12:20, Mark Janikas <mjanikas at esri.com> wrote:
> Hello All,
>
> I was wondering what the best way to trim an array based on some values I do
> not want….  I could use NUM.where or NUM.take… but let me give you an
> example:
>
> import numpy as NUM
>
> n = 100 (Length of my dataset)
> data = NUM.empty((n,), float)
> badRecords = []
> for ind, record in enumerate(records):
>                 if record == someValueIDOntWant:
>                                 badRecords.append(ind)
>                 else:
>                                 data[ind] = record
>
> Now, I want to “trim” my array using badRecords.  I guess I want to avoid
> copying.  Any thoughts on the best way to do it?  I do not want to use lists
> and then subsequently array the result as it is nice to pre-allocate the
> space.

Don't fear the copy. Use boolean indexing.

http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#boolean

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
  -- Umberto Eco



More information about the NumPy-Discussion mailing list