次の問題があります。整数の 2 つの n 次元配列があり、いくつかの条件を満たすアイテムのインデックスを決定する必要があります。
- インデックスには、「array1」に負の要素が含まれている必要があります。
- 負の要素を持つこのサブセットのうち、「array2」で最小値を持つ必要があります。
- 同点の場合は、「array1」の値が最も小さい値 (そうでない場合は最初の値) を選択します。
したがって、次があるとします。
array1 = np.array([1,-1,-2])
array2 = np.array([0,1,1])
次に、インデックス 2 (3 番目の数値) を返す必要があります。これを次のようにプログラムしようとしています。
import numpy as np
n = 3
array1 = np.array([1,-1,-2])
array2 = np.array([0,1,1])
indices = [i for i in range(n) if array1[i]<0]
indices2 = [i for i in indices if array2[i] == min(array2[indices])]
index = [i for i in indices2 if array1[i] == min(array1[indices2])][0] #[0] breaks the tie.
これは機能しているように見えますが、あまりエレガントではありません。私には、これを 1 行か 2 行で、新しい変数をあまり定義せずに行うことができるように思えます。誰かが改善のための提案を受けましたか? 前もって感謝します。