如何 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%
.
我有一个形状为 (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%
.