【发布时间】:2021-12-12 19:33:07
【问题描述】:
我知道我们可以通过以下方式根据行对 2D numpy 数组的列进行排序:
a = np.array([[1,4,7],
[3,1,5],
[9,5,8]])
a = a[:, a[1, :].argsort()]
Out: [[4,1,7],
[1,3,5],
[5,9,8]]
请注意,这确实是我想要的。第二行 (index=1) 现在已排序,第 0 行和第 2 行中的值也相应移动。即,列位置根据第 1 行的排序顺序而变化。
但现在我的问题是: 我没有 2D 数组,而是 3D 数组(即 2D 数组的数组)。
a = np.array([[[1,4,7],
[3,1,5],
[9,5,8]],
[[2,8,7],
[3,8,1],
[9,2,8]]])
我仍然想根据它们各自行 1 的值对 2D 数组的列进行单独排序。期望的结果是:
([[[4,1,7],
[1,3,5],
[5,9,8]],
[[7,2,8],
[1,3,8],
[8,9,2]]])
我尝试了以下方法,但结果不理想:
a = a[:, :, a[: , 1, :].argsort()]
【问题讨论】:
标签: python arrays numpy sorting