python - 找到坡度最陡的点 python

我有一个浮点列表,例如 [x1,x2,x3,x4,....xn],它们被绘制为折线图。我想找到斜率最陡的一组点。

现在,我在循环中计算一组点之间的差异,并使用 max() 函数来确定最大点。

还有其他优雅的方式吗?

最佳答案

假设 points 是您的值列表,您可以使用以下方法在单行中计算差异:

max_slope = max([x - z for x, z in zip(points[:-1], points[1:])])

但是你在紧凑性上获得的好处,你可能会失去可读性。

在这个列表理解中发生的事情如下:

  • 在原始列表的基础上创建了两个列表,分别是points[:-1] & points[1:]Points[:-1] 从原始列表的开头开始,到倒数第二个项目(含)。 Points[1:] 从第二项开始一直到最后一项(再次包含在内。)

例子

example_list = [1, 2, 3, 4, 5]
ex_a = example_list[:-1]  # [1, 2, 3, 4]
ex_b = example_list[1:]   # [2, 3, 4, 5]
  • 然后压缩这两个列表,创建一个对象,您可以从中绘制 x、z 对来计算差异。请注意,zip 不会在 Python 3 中创建列表,因此您需要将它的返回值传递给 list 参数。

喜欢:

example_list = [1, 2, 3, 4, 5]
ex_a = example_list[:-1]  # [1, 2, 3, 4]
ex_b = example_list[1:]   # [2, 3, 4, 5]
print(list(zip(ex_a, ex_b)))  # [(1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
  • 最后,您使用创建的对计算差异,将结果存储在列表中并获得最大值。

如果最大斜率的位置也很有趣,您可以使用 .index() 方法从创建的列表中获取索引。不过,在那种情况下,最好保存推导式创建的列表,而不仅仅是使用它。

https://stackoverflow.com/questions/38262544/

相关文章:

laravel - 仅在 Laravel 中公开某些授权路由

sql - 数据库中每个表的最大值(ID)

google-api - Google Classroom API 修改附件

bash - 在 byobu 选项卡中启动命令的脚本

android - 完成其他 Activity 之前的所有 Activity

ansible - 具有 SSH key 身份验证的用户如何在 Ansible 中拥有 sudo 权

r - 如何在 R 中将一个字符列拆分为多个列

php - 如何取消设置特定用户的 session ?

php - 在 Laravel 迁移中更改列类型的最佳方法是什么?

c# - 使用 Xamarin android 从 Asset 加载文件