假设我有两个数组,表示校准曲线的x和y坐标。在
X = [1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,30,40,50]
Y = [2,4,6,8,10,12,14,16,18,20,24,28,32,36,40,60,80,100]
我上面的示例数组包含18个点。您将注意到x值不是线性间隔的;在x的较低值处有更多的点
假设我需要将校准曲线中的点数减少到13个点。显然,我可以去掉前五个或最后五个点,但这会缩短x值的整体范围。为了保持范围并最小化x值之间的间距,我会优先删除x=2,4,6,8,10的值。删除这些x点及其各自的y值将在曲线中按要求保留13个点。在
在Python中如何自动删除点?一、 e.是否有从列表中选择最佳x点的算法,其中“最佳”是指在保持整体范围和遵循新点数的同时,使点尽可能靠近。在
请注意,剩余的点必须在原始列表中,因此我无法将18点插值到13点网格上。在
这将使所选点之间的平方根距离最大化。从某种意义上讲,它尽可能地分散了观点。在
请注意,这只适用于小问题。选择k点的时间复杂度是}。在
O(k * (len(X) choose k))
,因此基本上是O(exp(len(X))
。所以不要考虑使用这个,例如len(X) == 100
和{输出:
^{pr2}$如果您想再次使用原始系列:
一种可以实现这一点的算法:
这将删除2,4,6,8,10,3,。。。在
相关问题 更多 >
编程相关推荐