我知道通过使用高级索引对N-D numpy数组按另一个1-D数组排序,可以使用fancy indexing实现c = a[:, :, b]
,其中b
定义了按列排序的顺序。
>>> a = np.array([[[ 0, 1], [ 2, 3]],
[[ 4, 5], [ 6, 7]],
[[ 8, 9], [10, 11]]])
>>> b = np.array([1, 0])
>>> c = a[:, :, b]
>>> c
array([[[ 1, 0],
[ 3, 2]],
[[ 5, 4],
[ 7, 6]],
[[ 9, 8],
[11, 10]]])
现在我通过添加两个输入到b2
来增加b
,对应于我想要对a
中每个2x2集合进行排序的方式。
>>> b2 = np.array([[1, 0], [0, 1], [1, 0]])
>>> c2 = ?
>>> c2
array([[[ 1, 0],
[ 3, 2]],
[[ 4, 5],
[ 6, 7]],
[[ 9, 8],
[11, 10]]])
我有一组更大的输入数据,我有一个类似于“b2”的返回数组的函数,它提供了我应该获取哪些信息。因此,我想知道我应该填入c2 = ?
以获得所需的结果。
b2
不应该是np.array([[1, 0], [0, 1], [1, 0]])
(最后一行交换了位置)吗? - Alex Riley