Python-根据平均值将递增的类分配给列表val

标签 python list numpy

我有以下问题: 有一个值列表,比方说:

x = [1000, 950, 860, 1120, 430, 270, 0, 15, 0, 26, 278, 0, 950, 1020, 980, 1040, 670, 540, 820, 0, 0, 0, 190, 270, 479, 1247]

我计算平均值:

mean = np.mean(x)
# 505.96

现在我想计算一个列表,其中为列表 x 的每个项目分配一个值(从 1 开始),如果该项目高于平均值,则它分配一个(相同)值,直到其关系移位(低于平均值),然后分配第二个 val,依此类推。因此对于示例 x 列表,输出如下:

x = [1000, 950, 860, 1120, 430, 270, 0, 15, 0, 26, 278, 0, 950, 1020, 980, 1040, 670, 540, 820, 0, 0, 0, 190, 270, 479, 1247]
#   [1,    1,   1,   1,    2,   2,   2, 2,  2, 2,  2,   2, 3,   3,    3,   3,    3,   3,   3,   4, 4, 4, 4,   4,   4,   5   ]

谢谢

最佳答案

您可以采取np.diff将结果与平均值进行比较,以查看“转变”何时发生。然后采取np.cumsum增加值:

np.cumsum(np.diff(x>mean, prepend=False))
array([1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4,
       4, 4, 4, 5], dtype=int32)

关于Python-根据平均值将递增的类分配给列表val,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66561486/

相关文章:

python - 谷歌云视觉响应nodejs的非最大抑制

python - 更新 Django 中用户对象的变量值

python - 使用 Eventlet 从 WSGI 应用程序获取客户端 IP 地址

python - 类型错误 : function missing required positional argument when reading arguments from file

list - 如何在clojure中比较两个列表的元素

python - 在 matplotlib 图中突出显示具有特定 x 值范围的子序列

python - 如何用keras建立注意力模型?

list - 在 flutter dart 中合并 2 个对象列表的最简单方法是什么?

ListView 中的 Android CheckBox 获得焦点

python - audioop.rms() - 为什么它与普通 RMS 不同?