gpt4 book ai didi

python - 基于高于该阈值的值的平均值为变量设置阈值

转载 作者:行者123 更新时间:2023-12-03 19:04:59 24 4
gpt4 key购买 nike

我觉得我的问题的答案可能很明显,但我无法弄清楚。我想知道最好的方法(或任何好的方法),在 python 中,对数值变量进行阈值处理,使得高于该阈值的值的平均值(在我的情况下,它恰好高于,但它也可以很容易地下面)等于特定的给定数字。我会对使用 numpy 或 pandas 的任何高效或高效的解决方案感到满意。
从 Pandas 系列(或一维 numpy 数组)开始,例如:

[0.1, 0.2, 0.3, 0.4, 0.5]
(实际上,系列或数组可能很长)。例如,假设给定的数字,即目标平均值,是 0.35。在这种情况下,我们可以注意到所需的阈值必须是大于或等于 0.1 但小于 0.2 的任何数字,因为 0.2、0.3、0.4 和 0.5(均高于阈值)的平均值等于 0.35。 (特别是,答案并不是唯一的。)
此外,与上面的玩具示例不同,在某些情况下,可能无法完全匹配给定的数字。但我仍然想解决一个阈值,使得高于该阈值的所有值的平均值尽可能接近给定的数字。
非常感谢有关如何在 Python 中完成此任务的任何建议。特别是,如果存在执行此操作的 numpy 或 pandas 方法,请告诉我。如果我的问题需要进一步澄清,请告诉我。谢谢!

最佳答案

您可以计算原始数组中每个元素的阈值平均值:

import numpy as np
import pandas as pd

x = np.sort(np.random.random(20))
n = np.arange(1, len(x) + 1, 1)

# cumulative sum of x in reverse order / num elements gives threshold means:
threshold_means = np.cumsum(x[::-1])/n

df = pd.DataFrame(dict(threshold=x[::-1], threshold_means=threshold_means))
df = df.sort_values("threshold").reset_index(drop=True)
输出:
    threshold  threshold_means
0 0.036453 0.474160
1 0.057774 0.497197
2 0.060959 0.521609
3 0.095344 0.548706
4 0.218508 0.577042
5 0.229380 0.600944
6 0.281243 0.627484
7 0.298807 0.654118
8 0.340491 0.683727
9 0.374211 0.714931
10 0.514332 0.749003
11 0.554557 0.775077
12 0.590041 0.802642
13 0.672917 0.833014
14 0.788553 0.859697
15 0.800751 0.873925
16 0.863758 0.892219
17 0.870211 0.901706
18 0.874873 0.917453
19 0.960032 0.960032
这是相当有效的; len(x) = 100 万只需要不到一秒的时间。如果您有数十亿,您可以进行二分搜索或其他操作,因为阈值和应该是单调的。

关于python - 基于高于该阈值的值的平均值为变量设置阈值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63855934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com