我有兩個參差不齊的陣列Ii0和Iv0. 我根據增加的值對值進行排序,j但Ii01隨后我想Iv01反映相同的排序順序。一般來說,我希望代碼能夠處理許多不同形狀的Ii0和Iv0。附加了當前和所需的輸出。
import numpy as np
Ii0=np.array([[[0, 1],
[0, 3],
[1, 2]],
[[0, 3],
[2,5],
[0, 1]]])
Iv0 = np.array([[[10],
[20],
[30]],
[[100],
[200],
[300]]])
Ii01 = np.array([sorted(i, key = lambda x : x[1]) for i in Ii0])
print("Ii01 =",Ii01)
Iv01 = np.array([sorted(i, key = lambda x : x[0]) for i in Iv0])
print("Iv01 =",Iv01)
當前輸出為
Ii01 = [array([[[0, 1],
[1, 2],
[0, 3]],
[[0, 1],
[0, 3],
[2, 5]]])]
Iv01 = [array([[[ 10],
[ 20],
[ 30]],
[[100],
[200],
[300]]])]
預期的輸出是
Ii01 = [array([[[0, 1],
[1, 2],
[0, 3]],
[[0, 1],
[0, 3],
[2, 5]]])]
Iv01 = [array([[[ 10],
[ 30],
[ 20]],
[[300],
[100],
[200]]])]
uj5u.com熱心網友回復:
import numpy as np
Ii0 = np.array([[
[0, 1],
[0, 3],
[1, 2]],
[[0, 3],
[2, 5],
[0, 1]]])
Iv0 = np.array([[[10],
[20],
[30]],
[[100],
[200],
[300]]])
Ii01 = np.array([Ii[np.argsort(Ii[:, 1])] for Ii in Ii0])
print("Ii01 =", Ii01)
Iv01 = np.array([Iv[np.argsort(Ii[:, 1])] for Ii,Iv in zip(Ii0,Iv0)])
print("Iv01 =", Iv01)
我們需要對我們的第一個陣列進行排序,np.argsort它基本上回傳排序陣列的索引以及我們用來排列第二個陣列的索引(實際上第二個陣列沒有排序,它根據第一個陣列排序重新排列激情)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/497824.html
下一篇:如何通過多個文本檔案迭代坐標轉換
