如何 select 和阈值 x% 来自多维 NumPy 数组的值?

How to select and threshold x% of values from a multi-dim NumPy array?

我有一个形状为 (32, 128, 128) 的多维 NumPy 数组。对于此数组中的每个条目(形状为 (128, 128),我想检查其中存在的 80% 的值是否大于阈值,比如 0.5。

目前,我正在做这样的事情:

for entry in entries: # entries: (32, 128, 128)
    raveled = np.ravel(entry) # entry: (128, 128)
    total_sum = (raveled > 0.5).sum()
    proportion = total_sum/len(raveled)

    if proportion > 0.8:
        ...

我似乎想不出一个有效的方法来做到这一点。任何帮助将不胜感激。

x =  np.random.rand(32, 128, 128)
#check 80%
np.sum(x > 0.5, axis = (1, 2)) > 0.8 * 128 * 128

x > 0.5 将为所有值 (32 * 128 * 128) return True/False 布尔值。之后,我们对第 1 轴和第 2 轴 (128 * 128) 求和以提取真值的总数,即所有 32 个数组都满足条件的位置,并检查该数字是否超过 80%.