如何在特定点周围减少列表中的点?

时间:2019-05-28 02:13:48

标签: python

我不知道如何解释这个概念,好像我可能已经在Google上找到答案了。

我想做的是获取y点列表,并减少特定选定点以上和以下的所有值。可能在图表的中间,可能在图表的开头,等等。

使用图片更容易。这是我想做什么的可视化。

enter image description here

您可以看到我选择“减少”周围点的点。

我写了这个过于复杂的函数来做到这一点:

import numpy as np
x = [0.0, 4.8, 9.0, 11.3, 13.6, 17.1, 23.1, 29.5, 35.1, 39.8, 42.2] 
y = [1.35, 1.36, 1.39, 1.43, 1.46, 1.48, 1.49, 1.53, 1.59, 1.68, 1.8] 

squash_around = 1.43
squash_min = min([i-squash_around for i in y])
squash_max = max([i-squash_around for i in y])
y = [np.interp(i-squash_around, [squash_min, 0, squash_max], [.9, 1.0, 1.1])*i for i in y]

enter image description here

但是,它不能正确处理某些数据,例如,我将squash_around设置为.2,因此它应该修改除左上角以外的所有点,但不能:

enter image description here

如果有人可以指出我可能重复的问题,那就太好了。

1 个答案:

答案 0 :(得分:2)

您似乎要“减少”的是兴趣点(即带圆圈的点)与其他点的y值之间的y值差异。

如果我们让(x, y)为您要“减少”的点,那么我们可以相对于(x1, y1)“减少”另一点(x, y) {{1 }},并进行以下转换

a

如果(x1, y1) => (x1, y + (y1 - y) * a) 正确地停留在0 < a < 1处,则(x, y)以下的点向上移动,而y以上的点向下移动。将其放入numpy代码

y

enter image description here

您正在寻找的减价商品吗?