On Fri, Apr 20, 2012 at 2:15 PM, Andre Martel <soucoupevola...@yahoo.com>wrote:

> What would be the best way to remove the maximum from a cube and
> "collapse" the remaining elements along the z-axis ?
> For example, I want to reduce Cube to NewCube:
>
> >>> Cube
> array([[[  13,   2,   3,  42],
>         [  5, 100,   7,   8],
>         [  9,   1,  11,  12]],
>
>        [[ 25,   4,  15,   1],
>         [ 17,  30,   9,  20],
>         [ 21,   2,  23,  24]],
>
>        [[ 1,   2,  27,  28],
>         [ 29,  18,  31,  32],
>         [ -1,   3,  35,   4]]])
>
> NewCube
>
> array([[[  13,   2,   3,  1],
>         [  5, 30,   7,   8],
>         [  9,   1,  11,  12]],
>
>        [[ 1,   2,  15,  28],
>         [ 17,  18,  9,  20],
>         [ -1,   2,  23,   4]]])
>
> I tried with argmax() and then roll() and delete() but these
> all work on 1-D arrays only. Thanks.
>
>
Actually, those commands do work with n-dimensional arrays, but you'll have
to specify the axis (the default for all these functions is `axis=None`
which tell the function to operate on flattened the arrays). If you don't
care about the order of the "collapse", you can just do a simple sort (and
drop the last---i.e. max---sub-array):

>>> np.sort(cube, axis=0)[:2]

If you need to keep the order, you can probably use some combination of
`np.argsort` and `np.choose`.

Cheers,
-Tony
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to