私の一般的な問題は次のとおりです。
私が持っている入力として ( n
is some int >1
)
W = numpy.array(...)
L = list(...)
どこ
len(W) == n
>> true
shape(L)[0] == n
>> true
そして、コンパレータL
の値に関するリストをソートしたいと思います。W
私の考えは、次のことをすることでした:
def my_zip_sort(W,L):
srt = argsort(W)
return zip(L[srt],W[srt])
これは次のように機能するはずです。
a = ['a', 'b', 'c', 'd']
b = zeros(4)
b[0]=3;b[1]=2;b[2]=[1];b[3]=4
my_zip_sort(a,b)
>> [(c,1)(b,2)(a,3)(d,4)]
しかし、これはそうではありません。
TypeError: only integer arrays with one element can be converted to an index
したがって、別のループを実行する必要があります。
def my_zip_sort(W,L):
srt = argsort(W)
res = list()
for i in L:
res.append((L[srt[i]],W[srt[i]]))
return res
aに関するスレッドを見つけましたMaskableList
が、リストの特定の値を保持または破棄するだけでなく、並べ替える必要があるため、これはうまくいきません (コメントで読むことができます)。
a.__class__
>> msk.MaskableList
srt = argsort(b)
a[srt]
>> ['a', 'b', 'd']
結論:
list
オブジェクトの を の制約によってソートする方法を見つけたいですarray
。私は自分で方法を見つけました。これは、リストのインデックス作成を除いて、ちょっといいです。MaskableList
このタスクと同様に機能する、パフォーマンスの良いクラスを作成するのを手伝ってもらえますか?