[Numpy-discussion] Reordering 2 dimensional array by column
Nicole Stoffels
nicole.stoffels at forwind.de
Thu Aug 2 09:08:27 EDT 2012
Thanks eat! It helps and it's so easy! :)
On 02.08.2012 14:59, eat wrote:
> Hi,
>
> On Thu, Aug 2, 2012 at 3:43 PM, Nicole Stoffels
> <nicole.stoffels at forwind.de <mailto:nicole.stoffels at forwind.de>> wrote:
>
> Dear all,
>
> I have a two-dimensional array:
>
> a = array([[1,2,3],[0,2,1],[5,7,8]])
>
> I want to reorder it by the last column in descending order, so
> that I get:
>
> b =array([[5, 7, 8],[1, 2, 3],[0, 2, 1]])
>
> Perhaps along the lines:
> In []: a
> Out[]:
> array([[1, 2, 3],
> [0, 2, 1],
> [5, 7, 8]])
> In []: ndx= a[:, 2].argsort()
> In []: a[ndx[::-1], :]
> Out[]:
> array([[5, 7, 8],
> [1, 2, 3],
> [0, 2, 1]])
>
>
> What I did first is the following, which reorders the array in
> ascending
> order (I found that method in the internet):
>
> b = array(sorted(a, key=lambda new_entry: new_entry[2]))
> b = array([[0, 2, 1],[1, 2, 3],[5, 7, 8]])
>
> But I want it just the other way arround. So I did the following
> afterwards which results in an array only containing zeros:
> b_indices = b.argsort()
> b_matrix = b[b_indices[::-1]]
> new_b = b_matrix[len(b_matrix)-1]
>
> Is there an easy way to reorder it? Or is there at least a complicated
> way which produces the right output?
>
> I hope you can help me! Thanks!
>
> My 2 cents,
> -eat
>
>
> Best regards,
>
> Nicole
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org <mailto:NumPy-Discussion at scipy.org>
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20120802/ec131229/attachment.html>
More information about the NumPy-Discussion
mailing list