Am 28.1.2013 um 23:15 schrieb Lluís:

> Hi,
> 
> I have a somewhat convoluted N-dimensional array that contains information of 
> a
> set of experiments.
> 
> The last dimension has as many entries as iterations in the experiment (an
> iterative application), and the penultimate dimension has as many entries as
> times I have run that experiment; the rest of dimensions describe the features
> of the experiment:
> 
>    data.shape == (... indefinite amount of dimensions ..., NUM_RUNS, 
> NUM_ITERATIONS)
> 
> So, what I want is to get the data for the best run of each experiment:
> 
>    best.shape == (... indefinite amount of dimensions ..., NUM_ITERATIONS)
> 
> by selecting, for each experiment, the run with the lowest total time (sum of
> the time of all iterations for that experiment).
> 
> 
> So far I've got the trivial part, but not the final indexing into "data":
> 
>    dsum = data.sum(axis = -1)
>    dmin = dsum.min(axis = -1)
>    best = data[???]
> 
> 
> I'm sure there must be some numpythonic and generic way to get what I want, 
> but
> fancy indexing is beating me here :)

Did you have a look at the argmin function? It delivers the indices of the 
minimum values along an axis. Untested guess:

dmin_idx = argmin(dsum, axis = -1)
best = data[..., dmin_idx, :]

Gregor

_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to