python - 如何计算python中列表的“峰值”?
问题描述
我有一个列表,其中元素加起来为 1。如何测量列表的密集度(或峰值)?
[1,0,0,0,0] 这应该具有比 [0.2, 0.3, 0 , 0.4, 0.1] 更高的密度。这是因为第一个列表在直方图中看起来更尖。第二个列表会变化更多,没有一个元素明显优于其他元素。
解决方案
您可以使用类似以下的函数:
def peakyness(my_list):
deviation = []
for x in range(0, len(my_list)-1):
deviation.append(abs(my_list[x]-my_list[x+1]))
return (max(deviation))
>>> peakyness([1,0,0,0,0]) = 1
>>> peakyness([0.2,0.3,0,0.4 0.1]) = 0.4
这实际上将返回给定列表的 2 个元素之间的最大差异,因为 peakyness 需要一个与相邻元素差异最大的元素,如您所说:
没有一个元素明显优于其他元素
1
但是,当我们输入一个类似的列表时,这将返回一个值[1, 0, 1, 0, 1]
。
这个列表将有 3 个 1 的“峰”和 2 个 0 的“谷”。
如果这个列表不是“尖”的(你对尖的定义有点不清楚),那么最好的选择之一是使用标准使用统计模块的偏差
import statistics
statistics.stdev(my_list)
对于 list [1,0,1,0,1]
,这将返回一个值0.5477225575051661
推荐阅读
- java - 电子邮件服务的 Junit 测试
- java - 使用每个循环和映射创建 JSON 文件 - 它在 for 循环的所有迭代中重复第一个元素值
- android - 在 saveOnIstanceState() 之后 viewPager.setCurrentItem() 似乎不起作用
- java - Java 中的流比原生 for 循环慢得多 - 为什么?
- c# - 动态反序列化一个 json 文件是一些单元格是空的并且得到一个无效的数组
- xml - 如何在不将整个 XML 保存在内存中的情况下从 XML 文件中消除空叶元素?
- php - Symfony3 将表单数据传递给集合内的集合
- android - 位于行尾时不显示包含空格的嵌套文本组件
- c# - 通过 odata.context Url 获取 Office 365 服务通信 API 的元数据
- php - 如何让 PHP 升级到更高版本的 Curl?