Python 最小化两个列表之间的增量
给定两个列表,其中一个列表按某个系数的α进行缩放:Python 最小化两个列表之间的增量,python,optimization,scipy,Python,Optimization,Scipy,给定两个列表,其中一个列表按某个系数的α进行缩放: from random import randint alpha = 1.2 x = [randint(1, 100) for x in range(1000)] y = [int(alpha * i) for i in x] 我想过滤两个列表中低于某个阈值的值,从而最小化两个列表中返回的元素数量的增量。因此,如果我的x阈值是40,那么len([i代表i in x,如果i
from random import randint
alpha = 1.2
x = [randint(1, 100) for x in range(1000)]
y = [int(alpha * i) for i in x]
我想过滤两个列表中低于某个阈值的值,从而最小化两个列表中返回的元素数量的增量。因此,如果我的
x
阈值是40,那么len([i代表i in x,如果i<40])~400
我想知道y
的阈值应该是什么,因为alpha
未知,所以元素返回的数量是~400,在本例中为48 您可以计算平均值alpha
,如下所示:
alpha = sum((yn / float(xn)) for xn, yn in zip(x, y)) / len(x)
然后:
如果最小化
abs(len(filtered_x)-len(filtered_y))
至关重要,则可以在y_阈值附近执行局部搜索 您的x_阈值
允许您知道它下面有多少x
(此处400
)。因此,您只需在y
中找到排名第400位的元素,并将其用作y\u阈值
您可以通过排序y
(这是多余的)或选择第N个(可以在O(N)
中完成)。这种方法总是达到delta=0
对于更简单的近似解决方案,将alpha
估计为两个列表总和的比率,并设置y_threshold=alpha。x_阈值
。(可能首选alpha
,Sum(y.x)/Sum(x^2)
,或标准差比率的最小二乘估计值)如果alpha
未知,您甚至会如何计算y
?如果希望每个列表中的项目数相同,y
的阈值就是threshold*alpha
。或者过滤x
,然后创建y
。我只为问题设置alpha,我有两个列表,一个是另一个的近似缩放版本,我有一个固定的x阈值,我想要y阈值。显然,当您知道列表之间的关系时,答案就很清楚了。因此您有x
、y
和x_阈值
,您想计算y_阈值
?
y_threshold = int(alpha * x_threshold)