2010/8/12 Pinner, Luke <luke.pin...@environment.gov.au>: > 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?
Convert days to np.array, then you can index it with your indexmin: days = [10, 20, 31, 41, 51, 59, 69, 79, 90, 100] mydays = np.array (days) indexmin=np.array([[0, 2, 1], [6, 7, 3], [5, 5, 8]]) print mydays[indexmin] => [[10 31 20] [69 79 41] [59 59 90]] _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion