我有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数组。
答案 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]])