[Numpy-discussion] Replacing values based on index

Pinner, Luke Luke.Pinner at environment.gov.au
Thu Aug 12 01:19:43 EDT 2010


Apologies if this has been asked many times before, but I'm having
trouble even coming up with the right terms to search on.

I have an x,y,date stack of satellite images from which I need to know
on what date the max and min values occur. I can calculate the index at
which the min/max values occur, but how do I join that back to the date?

A simple example case:

import numpy as np

#Date when image was captured,
#images are in the stack in this order
days=[10, 20, 31, 41, 51, 59, 69, 79, 90, 100]

#dummy array representing something like
#"stackofimages.argmin(axis=2)"
indexmin=np.array([[0, 2, 1],
                   [6, 7, 3],
                   [5, 5, 8]])

#I want to convert indexmin to "daymin" i.e
#[[10, 31, 20],
# [69, 79, 41],
# [59, 59, 90]]
#Where the each element of indexmin represent the value
#at the corresponding index in the days list/array.

#What I am currently doing is below,
#which is _rather_ slow on large arrays
#as I'm calling np.where len(days) times
daymin=np.zeros(indexmin.shape).astype(np.int)
for i,d in enumerate(days):
    daymin[np.where(indexmin==i)]=d

Any better suggestions?

Regards
Luke Pinner


------
If you have received this transmission in error please notify us immediately by return e-mail and delete all copies. If this e-mail or any attachments have been sent to you in error, that error does not constitute waiver of any confidentiality, privilege or copyright in respect of information in the e-mail or attachments. 



Please consider the environment before printing this email.

------




More information about the NumPy-Discussion mailing list