7
說我有一個與NumPy陣列:2D與NumPy的排序 - 排序第1行,並有其他後續的分揀
[[4 9 2]
[5 1 3]]
我想這個數組的下排排序,但最上面一行跟隨排序,這樣我得到:
[[9 2 4]
[1 3 5]]
我知道,你可以排序像這樣使用排序()函數,但這需要列出的輸入和輸出。
任何想法?非常感謝!
說我有一個與NumPy陣列:2D與NumPy的排序 - 排序第1行,並有其他後續的分揀
[[4 9 2]
[5 1 3]]
我想這個數組的下排排序,但最上面一行跟隨排序,這樣我得到:
[[9 2 4]
[1 3 5]]
我知道,你可以排序像這樣使用排序()函數,但這需要列出的輸入和輸出。
任何想法?非常感謝!
import numpy as np
a = np.array([[4,9,2],[5,1,3]])
idx = np.argsort(a[1])
現在你可以使用IDX索引你的數組:
b=a[:,idx]
我能想到的唯一(高效)解決方案需要原始數組的副本。
import numpy as np
a = np.array([[4,9,2],[5,1,3]])
idx = np.argsort(a[1])
所以,這idx
是的索引排序列。
c = a.copy()
for i in range(len(idx)):
a[:,i] = c[:,idx[i]]
這應該是相當快的,但是,當然,浪費了一些記憶。
真棒,非常感謝!這個解決方案比我期待的要簡單得多。我正在閱讀numpy的argsort()示例,可能是過度考慮這個問題。 – woodstock