prr*_*rao 8 python arrays numpy matrix
我有以下numpy矩阵,我想根据第3列值按升序排序.
[[ 3.05706500e+06 4.98000000e+01 -2.62500070e+01 -9.38135544e+01]
[ 3.05706600e+06 4.98000000e+01 -3.00000056e+01 -9.38135544e+01]
[ 3.05706700e+06 4.98000000e+01 -3.37500042e+01 -9.38135544e+01]
[ 3.05706800e+06 4.98000000e+01 -3.75000028e+01 -9.38135544e+01]]
Run Code Online (Sandbox Code Playgroud)
这是我真正想要的矩阵.
[[ 3.05706800e+06 4.98000000e+01 -3.75000028e+01 -9.38135544e+01]
[ 3.05706700e+06 4.98000000e+01 -3.37500042e+01 -9.38135544e+01]
[ 3.05706600e+06 4.98000000e+01 -3.00000056e+01 -9.38135544e+01]
[ 3.05706500e+06 4.98000000e+01 -2.62500070e+01 -9.38135544e+01]]
Run Code Online (Sandbox Code Playgroud)
我怎么用numpy做到这一点?任何帮助,将不胜感激.谢谢!
Abh*_*jit 17
鉴于你的阵列
>>> arr
array([[ 3.05706500e+06, 4.98000000e+01, -2.62500070e+01,
-9.38135544e+01],
[ 3.05706600e+06, 4.98000000e+01, -3.00000056e+01,
-9.38135544e+01],
[ 3.05706700e+06, 4.98000000e+01, -3.37500042e+01,
-9.38135544e+01],
[ 3.05706800e+06, 4.98000000e+01, -3.75000028e+01,
-9.38135544e+01]])
Run Code Online (Sandbox Code Playgroud)
你可以简单地使用轴= 0的numpy.sort来根据需要对它进行排序
>>> numpy.sort(arr,axis=0)
array([[ 3.05706500e+06, 4.98000000e+01, -3.75000028e+01,
-9.38135544e+01],
[ 3.05706600e+06, 4.98000000e+01, -3.37500042e+01,
-9.38135544e+01],
[ 3.05706700e+06, 4.98000000e+01, -3.00000056e+01,
-9.38135544e+01],
[ 3.05706800e+06, 4.98000000e+01, -2.62500070e+01,
-9.38135544e+01]])
>>>
Run Code Online (Sandbox Code Playgroud)
我相信我之前的回答是错误的,因为我误解了这个问题.这是正确的答案
>>> arr[arr[:,2].argsort()]
array([[ 3.05706800e+06, 4.98000000e+01, -3.75000028e+01,
-9.38135544e+01],
[ 3.05706700e+06, 4.98000000e+01, -3.37500042e+01,
-9.38135544e+01],
[ 3.05706600e+06, 4.98000000e+01, -3.00000056e+01,
-9.38135544e+01],
[ 3.05706500e+06, 4.98000000e+01, -2.62500070e+01,
-9.38135544e+01]])
>>>
Run Code Online (Sandbox Code Playgroud)