【发布时间】:2017-08-22 00:50:09
【问题描述】:
假设我有两个数组表示校准曲线的 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 中自动选择和删除这个点? IE。是否有一种算法可以从列表中选择最佳 x 点,其中“最佳”被定义为在保持整体范围并遵守新点数的同时保持点尽可能接近。
请注意,剩余的点必须在原始列表中,因此我无法将 18 个点插入到 13 个点的网格中。
【问题讨论】:
-
对不起 - 我已经编辑了我的原始问题(希望如此!)澄清事情。基本上我想减少值的数量,但保持在整个范围内(即最小 x 和最大 x)。为了实现这一点,我想删除靠近的点