按索引对numpy.array行进行排序

时间:2014-09-06 11:34:47

标签: python arrays python-2.7 numpy

我有2D numpy.array和一个索引元组:

a = array([[0, 0], [0, 1], [1, 0], [1, 1]])
ix = (2, 0, 3, 1)

如何按索引排序数组的行?预期结果:

array([[1, 0], [0, 0], [1, 1], [0, 1]])

我尝试使用numpy.take,但它只能用于1D数组。

1 个答案:

答案 0 :(得分:4)

事实上,您可以使用ndarray.take()。诀窍是提供第二个参数(axis):

>>> a.take(ix, 0)
array([[1, 0],
       [0, 0],
       [1, 1],
       [0, 1]])

(没有axis,在取出元素之前,数组会变平。)

可替换地:

>>> a[ix, ...]
array([[1, 0],
       [0, 0],
       [1, 1],
       [0, 1]])