当尝试从argsort返回多个一维数组的结果时,我从结果中获得了新的维度。有人可以解释为什么会发生这种情况,我该怎么做才能重现结果?
np.random.seed(3)
M = np.random.rand(3,3)
array([[0.5507979 , 0.70814782, 0.29090474],
[0.51082761, 0.89294695, 0.89629309],
[0.12558531, 0.20724288, 0.0514672 ]])
idx = M.argsort(axis=1)
idx
array([[2, 0, 1],
[0, 1, 2],
[2, 0, 1]], dtype=int64)
M[idx]
array([[[0.12558531, 0.20724288, 0.0514672 ],
[0.5507979 , 0.70814782, 0.29090474],
[0.51082761, 0.89294695, 0.89629309]],
[[0.5507979 , 0.70814782, 0.29090474],
[0.51082761, 0.89294695, 0.89629309],
[0.12558531, 0.20724288, 0.0514672 ]],
[[0.12558531, 0.20724288, 0.0514672 ],
[0.5507979 , 0.70814782, 0.29090474],
[0.51082761, 0.89294695, 0.89629309]]])
M[idx]
给我的形状是(3,3,3),而不是(3,3)。但是1D数组很吸引人,我可以轻松地在argsort之后重现结果。
我想要这样的结果:
array([[0.29090474, 0.5507979, 0.70814782],
[0.51082761, 0.89294695, 0.89629309],
[0.0514672, 0.12558531, 0.20724288]])