我有以下数组:
master_array = [[1. 2. 3. 4. 5.]
[9. 8. 4. 5. 1.]]
我想对第二个子数组排序master_array,以便保持第一个子数组和第二个子数组之间的关系
master_array = [[5. 3. 4. 2. 1.]
[1. 4. 5. 8. 9.]]
谢谢
答案 0 :(得分:1)
将列表转换为numpy数组
>>> import numpy as np
>>> master_array = [[1.,2.,3.,4.,5.], [9.,8.,4.,5.,1.]]
>>> n=np.array(master_array)
>>> n
array([[ 1., 2., 3., 4., 5.],
[ 9., 8., 4., 5., 1.]])
为第二个数组分配索引值,然后选择n[1]
>>> temp=list(enumerate(n[1]))
>>> temp
[(0, 9.0), (1, 8.0), (2, 4.0), (3, 5.0), (4, 1.0)]
根据数组元素对数组进行排序
>>> list1=sorted(temp,key=lambda x:x[1])
>>> list1
[(4, 1.0), (2, 4.0), (3, 5.0), (1, 8.0), (0, 9.0)]
从排序结果中获取所有索引并存储在单独的数组中
>>> a=[i[0] for i in list1 ]
>>> a
[4, 2, 3, 1, 0]
在numpy数组
上使用numpy中的列索引>>> n[:,a]
array([[ 5., 3., 4., 2., 1.],
[ 1., 4., 5., 8., 9.]])