我有一個大小為300x5的陣列,我試圖以這樣的方式對陣列進行排序:索引為4的列是我的主索引,以升序排列,索引為1的列是次索引,以降序排列,索引為3的列是三級索引,以升序排列。 我試著用下面的代碼來實作這一點,
idx = np. lexsort((arr[:,3],arr[:,1][:-1], arr[:,4])
arr= arr[idx]
其中arr --> 大小為300x5的陣列
在執行這個程序中,二級索引也被排序為升序而不是降序。誰能幫我解決這個問題呢
uj5u.com熱心網友回復:
我認為這是你的答案,請檢查并給我你的評論。
idx = np.lexsort((arr[:,3],arr[:,1],arr[:,4))
arr = arr[idx][::-1]
uj5u.com熱心網友回復:
我認為你想要-arr[:,1]而不是arr[:,1][:-1]作為二級索引。
>>> import numpy as np
>>> arr = np.random.randint(0, 21, (300, 5)
>>> arr
array([[ 0, 19, 6, 19, 17]。
[16, 2, 14, 17, 0] 。
[8, 17, 3, 17, 12] 。
...,
[4, 18, 18, 3, 8] 。
[10, 15, 4, 12, 4] 。
[9, 16, 12, 0, 12] ])
>>> idx = np.lexsort((arr[:,3],-arr[:,1],arr[:,4] )
>>> arr = arr[idx] 。
>>> arr = arr[idx].
array([[11, 20, 11, 18, 0],
[11, 16, 12, 2, 0] 。
[9, 16, 4, 8, 0] 。
...,
[20, 4, 5, 11, 20] 。
[9, 4, 0, 19, 20] 。
[9, 2, 4, 10, 20] ])
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/310836.html
標籤:
