我已經使用可以與 lexsort 匹配的一維陣列 argsort 進行了復制。
#a = 1d np.array
#b = 1d np.array
def lexsort_copy(a,b):
idxs= np.argsort(a,kind='stable')
return idxs[np.argsort(b[idxs],kind='stable')]
lexsort_copy(a,b) == np.lexsort((a,b))
這給了我相同的輸出,但我正在努力如何使用二維陣列復制它。
測驗二維陣列:
test=np.array([[100,100,100,100,111,400,120],[229,1133,152,210,120,320,320]])
np.lexsort(test)
輸出:
array([4, 2, 3, 0, 6, 5, 1], dtype=int64)
我們如何在不將 lexsort 用于 2d 陣列的情況下復制上述輸出?
這里的任何解決方案將不勝感激!謝謝!
uj5u.com熱心網友回復:
您可以擴展您lexsort_copy以使用二維陣列,如下所示:
def lexsort2D_copy(data):
idxs = np.arange(data.shape[1])
for i in range(data.shape[0]-1):
idxs = np.argsort(data[i][idxs],kind='stable')
return idxs[np.argsort(data[-1][idxs],kind='stable')]
測驗:
test=np.array([[100,100,100,100,111,400,120],
[229,1133,152,210,120,320,320],
[29,133,12,10,10,20,3120]])
np.lexsort(test) == lexsort2D_copy(test)
test=np.array([[100,100,100,100,111,400,120],
[229,1133,152,210,120,320,320]])
np.lexsort(test) == lexsort2D_copy(test)
輸出:
array([ True, True, True, True, True, True, True])
array([ True, True, True, True, True, True, True])
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/477422.html
上一篇:類方法回傳無
