我得到了一系列要点:
array(
array('x' => ...,'y' => ...),
array('x' => ...,'y' => ...)
...
)
将这些积分放在一个最佳方式是什么,即处于“avarge”位置?配对然后配对然后配对......一个好的算法?
我会为这个问题给自己-1,因为它似乎很容易,但我现在正在研究项目超过20个小时,我的大脑就消失了。
嗯......就像计算avarge x和avarge y一样简单吗?答案 0 :(得分:1)
最好的解决方案是关闭电脑并进入睡眠状态几个小时。然后唤醒休息并准备好进行新的编程会话。这个解决方案基于这样一个假设:你已经为这个项目分配了20个小时没有任何适当的休息时间。
虽然这不是您问题的直接答案,但它肯定会帮助您自己实现目标。不要低估小睡的力量。
答案 1 :(得分:1)
看一下我写的这个函数,循环遍历多维数组的所有元素,并在将所有元素添加到一起后返回它们的平均值。
print_r(getAveragePoints(array(array('x' => 1,'y' => 3),array('x' => 2,'y' => 4))));
function getAveragePoints($arrays = array()) {
if(!empty($arrays)) {
$i=0;
$x = 0;
$y = 0;
foreach($arrays as $array) {
// this would take avg
$x += $array['x']; // x
$y += $array['y']; // y
$i++;
}
$avgX = $x / $i;
$avgY = $y / $i;
return array($avgX,$avgY);
} else {
return array(0,0);
}
}
答案 2 :(得分:1)
简单平均选项:
$pointArray = array(
array('x' => 1,'y' => 2),
array('x' => 2,'y' => 5),
array('x' => 3,'y' => 3) ,
array('x' => 4,'y' => 6) ,
array('x' => 4,'y' => 5) ,
);
$valueCount = count($pointArray);
$midpoint = array_map(
function($value) use($valueCount) {
return $value / $valueCount;
},
array_reduce(
$pointArray,
function($summary, $value) {
return array(
'x' => $summary['x'] += $value['x'],
'y' => $summary['y'] += $value['y']
);
},
array('x' => 0, 'y' => 0)
)
);
var_dump($midpoint);