C# 如何在MathNet中找到最大矩阵元素?

C# 如何在MathNet中找到最大矩阵元素?,c#,.net,matrix,max,mathnet-numerics,C#,.net,Matrix,Max,Mathnet Numerics,在C#中使用MathNet查找最大矩阵元素的最佳(可读且快速)方法是什么? 这是我的方式: int size = 4; var matrix = Matrix.Build.Dense(size, size, Matrix.One); matrix[3, 3] = 3; var max = matrix.ReduceRows((v1, v2) => v1.AbsoluteMaximum() > v2.AbsoluteMaximum()? v1 : v2).AbsoluteMaximum

在C#中使用MathNet查找最大矩阵元素的最佳(可读且快速)方法是什么? 这是我的方式:

int size = 4;
var matrix = Matrix.Build.Dense(size, size, Matrix.One);
matrix[3, 3] = 3;
var max = matrix.ReduceRows((v1, v2) => v1.AbsoluteMaximum() > v2.AbsoluteMaximum()? v1 : v2).AbsoluteMaximum()
尝试使用
matrix.Enumerate().Maximum()
,这样既简单又快速。您也可以使用
Enumerable.Max
extensions方法,但是
Statistics.Max在密集矩阵的情况下要快得多

对于稀疏矩阵,您可能需要执行
matrix.Enumerate(Zeros.AllowSkip).max()
,但如果返回值为负值(但可能必须为零),则需要进行特殊处理


还要注意的是,
绝对最大值
实际上是绝对最大值,它不同于最大值(
-5 |>-3 |
,但是
-5<3
)。

请定义你所说的
最佳方法的含义。最快的?最少字符数?更容易理解?还有别的吗?@neolik谢谢,我定义了“最好的方式”。我相信每种编程语言/lib都有一种默认的执行方式,您只需要出于某些性能原因等原因进行调整。在这种情况下,代码的可读性比其他任何东西都重要,尽管性能仍然受到尊重。谢谢。解释很好。