に優れていることが並べ替えられます私はnumpyの配列を持っていると私は、例えば0に優れているソートトップ値のインデックスを持っているWAN:numpyの:トップ値のインデックスが0
[-0.4, 0.6, 0, 0, 0.4, 0.2, 0.7]
そして、私が持っていると思います:
[6, 1, 4, 5]
私は私が実現される機能を使用してそれを行うことができますが、私はすでにnumpyの実装に何かがあるタスクのこの種のためにね。
に優れていることが並べ替えられます私はnumpyの配列を持っていると私は、例えば0に優れているソートトップ値のインデックスを持っているWAN:numpyの:トップ値のインデックスが0
[-0.4, 0.6, 0, 0, 0.4, 0.2, 0.7]
そして、私が持っていると思います:
[6, 1, 4, 5]
私は私が実現される機能を使用してそれを行うことができますが、私はすでにnumpyの実装に何かがあるタスクのこの種のためにね。
あなたも行うことができます。
L = [-0.4, 0.6, 0, 0, 0.4, 0.2, 0.7]
[L.index(i) for i in sorted(filter(lambda x: x>0, L), reverse=True)]
Out[72]: [6, 1, 4, 5]
あなたはnp.where
a = np.array([-0.4, 0.6, 0, 0, 0.4, 0.2, 0.7])
np.where(a > 0)[0].tolist()
結果
[1, 4, 5, 6]
で実装することができますnp.where(a > 0)
の結果がnumpyの配列の組の形です。したがって、リストを使用してリストに変換できますtolist()
np.where()
を使用してください。
d > 0.0
はブール型マスクを生成し、where
はマスクが真であるすべての値を取得します。
>>> d=np.array([-0.4, 0.6, 0, 0, 0.4, 0.2, 0.7])
>>> r=np.where(d > 0)
>>> s=sorted(r[0].tolist(), key=lambda x:d[x], reverse=True)
>>> s
[6L, 1L, 4L, 5L]
EDIT
は、ここで私はマスクによって意味です。
>>> mask = d > 0
>>> mask
array([False, True, False, False, True, True, True], dtype=bool)
ええ、インデックスの順番はどうですか? – mel
ここでベクトル化されたアプローチだ - インデックスの順序について
In [37]: A = np.array([-0.4, 0.6, 0, 0, 0.4, 0.2, 0.7])
In [38]: idx = np.where(A>0)[0]
In [39]: idx[A[idx].argsort()[::-1]]
Out[39]: array([6, 1, 4, 5])
うんけど何 -
サンプル実行? – mel