在Python中合并两个数组成矩阵并排序
好的,这个问题很简单,但我在这里找不到解决办法;
我有两个列表,A和B。
A=(0,1,2,3,...,N-1) (N elements)
B=(-50,-30,-10,.....,-45) (N elements)
我想创建一个新的结构,类似于一个2D矩阵"C",它有2行N列的元素,这样;
C(0)=(0,-50)
C(1)=(1,-30)
...
C(N)=(N-1,-45)
我一直没能做到这一点,因为我找不到简单的方法来构建这样的矩阵。
接着,我想得到一个新的矩阵"D",其中所有来自B的元素都按从高到低的顺序排列,这样;
D(0)=(0,-50)
D(1)=(N-1,-45)
D(2)=(1,-30)
...
我该怎么做呢?
附注:一旦我得到了"D",我该如何将它分成两个字符串A2和B2,就像最开始的那样?这样;
A2=(0,N-1,1,...)
B2=(-50,-45,-30,...)
1 个回答
9
C = zip(A, B)
D = sorted(C, key=lambda x: x[1])
A2, B2 = zip(*D)
A2, B2 = zip(*sorted(zip(A,B), key=lambda x: x[1]))
或者把它们都放在一行上: