Python相当于Matlab [a,b] = sort(y)

时间:2015-02-14 03:51:43

标签: python matlab python-2.7

我对Python语言很陌生,想知道如何使用以下内容

(1)  y = [some vector]
(2)  z = [some other vector]
(3)  [ynew,indx] = sort(y)
(4)  znew = z(indx)

我可以做第1,2和4行,但第3行给我配合。有什么建议。我所寻找的不是用户编写的功能,而是语言本身固有的东西 感谢

2 个答案:

答案 0 :(得分:5)

将NumPy用于第3行,假设y是行向量,否则需要axis=0

ynew=y.sort(axis=1)
indx=y.argsort(axis=1)

答案 1 :(得分:0)

您可以尝试执行以下操作:

import numpy as np

y = [1,3,2]
z = [3,2,1]
indx = [i[0] for i in sorted(enumerate(y), key=lambda x:x[1])]
print(indx)

#convert z to numpy array in order to use np.ix_ function
z = np.asarray(z)

znew = z[np.ix_(indx)]
print(znew)

结果:

#the indx is
[0, 2, 1]

#the znew is
array([3, 1, 2])