Issue
I have two arrays A
and B
with one-to-one correspondence i.e. values corresponding to [0,1] in A
is 10 in B
, [0,2] in A
is 20 in B
and so on. Now I sort A
to yield a new array A1
. How do I generate B1
with respect to A1
? The desired output is attached.
import numpy as np
A = np.array([[[0, 1],[0, 2],[1, 3],[2, 3],[2, 5],[3, 4],[3, 6],[4, 7],[5, 6],[6, 7]]])
B = np.array([[[10],[20],[30],[40],[50],[60],[70],[80],[90],[100]]])
A1=np.sort(A,axis=1)
#A1=array([[[0, 1],[0, 2],[1, 3],[2, 3],[3,4],[2, 5],[3, 6],[5, 6],[4, 7],[6, 7]]])
The desired output is
B1=array([[[10],[20],[30],[40],[60],[50],[70],[90],[80],[100]]])
Solution
You can use argsort()
function and [:]
operator to ahieve the desired result:
A = np.array([[[0, 1],[0, 2],[1, 3],[2, 5],[3, 4],[4, 7],[5, 6]]])
order = A[0,:, 1].argsort()
A =np.array([B[0][order]])
print(A)
Answered By - user942761
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.