我有两个 numpy 数组。一个是 N × M,另一个是 N × 1。我希望能够按 M 维度中的任何一个对第一个列表进行排序,并且我希望列表保持相同的顺序(即,如果我交换第 1 行和第 15 行list1,我也希望 list2 的第 1 行和第 15 行交换。)
例如:
import numpy as np
a = np.array([[1,6],[3,4],[2,5]])
b = np.array([[.5],[.8],[.2]])
然后,我希望能够按每行的第一个元素进行排序,a
以给出:
a = [[1,6],[2,5],[3,4]]
b = [[.5],[.2],[.8]]
或按每行的第二个元素进行排序,a
以给出:
a = [[3,4],[2,5],[1,6]]
b = [[.8],[.2],[.5]
我看到很多类似的问题,其中两个列表都是一维的,例如这个问题。或者关于排序列表的问题,例如这个。但我找不到我要找的东西。
最终我得到了这个工作:
import numpy as np
a = np.array([[1,6],[3,4],[2,5]])
b = np.array([[.5],[.8],[.2]])
package = zip(a,b)
print package[0][1]
sortedpackage= sorted(package, key=lambda dim: dim[0][1])
d,e = zip(*sortedpackage)
print d
print e
现在这会产生我想要的 d 和 e :
d = [[3,4],[2,5],[1,6]]
e = [[.8],[.2],[.5]
但我不明白为什么。给出 0.5 -这 print package[0][1]
不是我排序的元素。为什么是这样?我正在做的事情健壮吗?