gpt4 book ai didi

r - 从数值向量中采样等距点

转载 作者:行者123 更新时间:2023-12-03 15:51:35 26 4
gpt4 key购买 nike

我有一个数字向量:

vec = c(1464.556644,552.6007169,155.4249747,1855.360016,1315.874155,2047.980206,2361.475519,4130.530507,1609.572131,4298.980363,697.6034771,312.080866,2790.738644,1116.406288,989.6391649,2683.393338,3032.080837,2462.137352,2964.362507,1182.894473,1268.968128,4495.503015,576.1063996,232.4996213,1355.256694,1336.607876,2506.458008,1242.918255,3645.587384)

我想 sample n=5点尽可能彼此等距。换句话说,我想从 vec 获得积分。最接近以下几点:
seq(min(vec),max(vec),(max(vec)-min(vec))/(n-1))

实现这一目标的最快方法是什么?

最佳答案

我对 thelatemail 投了赞成票,如果他没有这么快发布,那也将是我快速而肮脏的解决方案:-)

我认为更健壮的方法是解决整数规划。例如,它将防止多次选择同一点的可能性。

n <- 5
N <- length(vec)
ideal <- seq(min(vec),max(vec),(max(vec)-min(vec))/(n-1))

library(lpSolve)
cost.mat <- outer(ideal, vec, function(x, y) abs(x-y))
row.signs <- rep("==", n)
row.rhs <- rep(1, n)
col.signs <- rep("<=", N)
col.rhs <- rep(1, N)
sol <- lp.transport(cost.mat, "min", row.signs, row.rhs,
col.signs, col.rhs)$solution

final <- vec[apply(sol, 1, which.max)]

这肯定会更慢,但在我看来,这是唯一“最佳且 100% 可靠”的方式。

关于r - 从数值向量中采样等距点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23145595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com