按索引排序numpy.array行
我有一个二维的 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
,但是它只在一维数组上按我想的那样工作。
1 个回答
6
其实你可以使用 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]])