Arrays numpy中沿多维索引排序
我有一个三维数组,需要排序。我还有一个二维索引,是我用Arrays numpy中沿多维索引排序,arrays,numpy,Arrays,Numpy,我有一个三维数组,需要排序。我还有一个二维索引,是我用lexsort得到的,我想用它来排序。我找不到如何将索引应用于数组而不出现额外维度 将numpy导入为np a=np.array([ [ [1, 1, 1], [0, 1, 2], [3, 1, 1], [-1, 1, 1], [0, 2, 2], [1, 2, 2], ],[ [-1, 1, 1], [0, 1, 2], [-3, 1, 1], [1, 1, 1], [0, -2, 2], [-1, -2, 2], ],[ [-1, 1,
lexsort
得到的,我想用它来排序。我找不到如何将索引应用于数组而不出现额外维度
将numpy导入为np
a=np.array([
[
[1, 1, 1],
[0, 1, 2],
[3, 1, 1],
[-1, 1, 1],
[0, 2, 2],
[1, 2, 2],
],[
[-1, 1, 1],
[0, 1, 2],
[-3, 1, 1],
[1, 1, 1],
[0, -2, 2],
[-1, -2, 2],
],[
[-1, 1, 1],
[-0, 1, -2],
[-3, 1, 1],
[1, 1, 1],
[-0, -2, -2],
[-1, -2, -2],
],
])
排序的索引=np.lexsort((a[:,:,0],a[:,:,1],a[:,:,2]),轴=1)
排序后的索引为
[[3 0 2 1 4 5],[2 0 3 5 4 1],[5 4 1 2 0 3]]
最终结果应该是
a_sorted=np.array([
[
[-1, 1, 1],
[1, 1, 1],
[3, 1, 1],
[0, 1, 2],
[0, 2, 2],
[1, 2, 2],
],[
[-3, 1, 1],
[-1, 1, 1],
[1, 1, 1],
[-1, -2, 2],
[0, -2, 2],
[0, 1, 2],
],[
[-1, -2, -2],
[0, -2, -2],
[0, 1, -2],
[-3, 1, 1],
[-1, 1, 1],
[1, 1, 1],
],
])
我试过了
a[已排序的索引]
a[已排序的索引:]
a[:,排序的索引]
我正要循环这件事,但我想把它做好。你可以使用
np。沿着轴走
np.take_along_axis(a,sorted_index[...,None],axis=1)
输出是
array([[[-1, 1, 1],
[ 1, 1, 1],
[ 3, 1, 1],
[ 0, 1, 2],
[ 0, 2, 2],
[ 1, 2, 2]],
[[-3, 1, 1],
[-1, 1, 1],
[ 1, 1, 1],
[-1, -2, 2],
[ 0, -2, 2],
[ 0, 1, 2]],
[[-1, -2, -2],
[ 0, -2, -2],
[ 0, 1, -2],
[-3, 1, 1],
[-1, 1, 1],
[ 1, 1, 1]]])
当然我犯了一个错误。。。我稍后会更正它,以免混淆在这里着陆的人:D