给定一个值,使用Numpy查找百分比%

cqoc49vn  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(112)

可能有更好的词来描述这个问题,但是我想做的是np.percentile()的相反。我有一个n个数字的列表,我想看看它们中有多少百分比小于给定的值。现在我得到这个值的方法是不断尝试不同的小数。* 我想要 * Numpy告诉我的是:
给定阈值= 0.20(输入),列表d中大约99.847781%(输出)的项目低于这个百分位数。
我现在要做的是得到这个数字是相当粗略的:

>>> np.percentile(np.absolute(d), 99.847781)
0.19999962082827874

>>> np.percentile(np.absolute(d), 99.8477816)
0.19999989822334402

>>> np.percentile(np.absolute(d), 99.8477817)
0.19999994445584851

>>> np.percentile(np.absolute(d), 99.8477818)
0.19999999068835939
...
z18hc3ub

z18hc3ub1#

如果我没理解错你的问题的话

sum(d < threshold) / len(d)

应该这样做。
编辑:我错过了问题中的绝对值-

sum(np.abs(d) < threshold) / float(len(d))
mo49yndu

mo49yndu2#

假设d是一个NumPy数组,一般来说,你可以这样做:

(d < threshold).mean()

对于绝对值:

(np.abs(d) < threshold).mean()
pxq42qpu

pxq42qpu3#

其他的答案都很棒。但是,如果数组中的某些值可能与阈值相同(例如,整数数组),则此技巧将处理此情况:

( (d < threshold).mean() + (d <= threshold).mean() ) / 2

只是用小于和小于或等于求平均值。

相关问题