我有一个 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]
但是对于排序后的索引,我需要将它们分成两个简单的子集:小于或等于和大于或等于给定的数据。此外,我不需要屏蔽值,它们需要被删除。例如,使用datum = 51.1
,我如何过滤sorted_ind
到上面的 10 个索引datum
和下面的 8 个值?(注意:由于逻辑标准或等于逻辑标准,有一个共享索引。可以从分析中删除 3 个屏蔽值)。我需要保留展平的索引位置,就像我np.unravel_index(ind, ar.shape)
稍后使用的那样。