最低から最高に並べ替える必要がある値の 2D マスク配列があります。例えば:
import numpy as np
# Make a random masked array
>>> ar = np.ma.array(np.round(np.random.normal(50, 10, 20), 1),
mask=np.random.binomial(1, .2, 20)).reshape((4,5))
>>> print(ar)
[[-- 51.9 38.3 46.8 43.3]
[52.3 65.0 51.2 46.5 --]
[56.7 51.1 -- 38.6 33.5]
[45.2 56.8 74.1 58.4 56.4]]
# Sort the array from lowest to highest, with a flattened index
>>> sorted_ind = ar.argsort(axis=None)
>>> print(sorted_ind)
[14 2 13 4 15 8 3 11 7 1 5 19 10 16 18 6 17 0 12 9]
しかし、並べ替えられたインデックスを使用して、インデックスを 2 つの単純なサブセットに分割する必要があります。指定されたデータム以下と以上です。さらに、マスクされた値は必要ないため、削除する必要があります。たとえば、上の 10 個のインデックスと下の 8 個の値datum = 51.1
にフィルターをかけるにはどうすればよいですか? (注:ロジック基準または等しいため、1 つの共有インデックスがあります。3 つのマスクされた値は分析から削除できます)。後で使用するため、平坦化されたインデックス位置を保持する必要があります。sorted_ind
datum
np.unravel_index(ind, ar.shape)