如何轻松优雅地进行PHP矩阵运算?

发布于 2024-09-06 05:18:03 字数 418 浏览 2 评论 0原文

我有一个 $max ,它本质上是一个二维数组。

$max 中的每个元素要么是 1,要么是 0

可以用 $max[$x][$y]< 表示/code>,其中$x0~WIDTH内的整数,与$y类似

我的目的是找到行< /strong> 和 $max 中的 之和大于 CONSTANT,并获取平均距离符合条件的行/列之间。

有人有好的解决办法吗?

I've a $max which is essentially a two dimensional array.

Each element in $max is eithor 1 or 0,

can be denoted by $max[$x][$y], where $x is an integer within 0~WIDTH,similar for $y

My purpose is to find rows and columns in the $maxthat sums up greater than a CONSTANT, and get the average distance between rows/columns that qualify.

Anyone has a good solution ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

哎呦我呸! 2024-09-13 05:18:03

我还没有测试过这个,但它应该可以用于总结列和行:

//Map columns and rows into their respective values
//Note that we preserve the col/row indexes
$rowval = array();
$colval = array();
foreach($max as $k1 => $row) {
  $rowval[$k1] = array_sum($row);
  foreach($row as $k2 => $col) {
    if(!isset($colval[$k2])) {
      $colval[$k2] = 0;
    }
    $colval[$k2] += $col;
  }
}

//Define filter function
function is_over($val) {
  return $val > CONSTANT;
}

//Filter out the cols/rows from their respective arrays
//Keys will be preserved by array_filter
$foundcols = array_filter($colval, 'is_over');
$foundrows = array_filter($rowval, 'is_over');

不过,您仍然需要计算平均距离。

I have not tested this, but it should work for summing up the columns and rows:

//Map columns and rows into their respective values
//Note that we preserve the col/row indexes
$rowval = array();
$colval = array();
foreach($max as $k1 => $row) {
  $rowval[$k1] = array_sum($row);
  foreach($row as $k2 => $col) {
    if(!isset($colval[$k2])) {
      $colval[$k2] = 0;
    }
    $colval[$k2] += $col;
  }
}

//Define filter function
function is_over($val) {
  return $val > CONSTANT;
}

//Filter out the cols/rows from their respective arrays
//Keys will be preserved by array_filter
$foundcols = array_filter($colval, 'is_over');
$foundrows = array_filter($rowval, 'is_over');

You still have to calculate the average distance though.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文