在 Mathematica 中的对列表中找到最大对
Find the max pair in a list of pairs in Mathematica
有没有一种简单的方法可以从对列表中找到最大元素?基于列表构造(这些对应于坐标),有一个明确定义的最大值 {x_max, y_max}。例如,我正在寻找一个函数 MaxElement
MaxElement[{{0, 0}, {0, 1}, {1, 1}, {1, 0}}]
这将 return {1,1}
MaxElement[list_] := Module[{cases},
cases = Cases[list, Max /@ Transpose[list]];
If[cases == {}, "no clear maximum pair", First@cases]]
MaxElement[{{0, 0}, {0, 1}, {1, 1}, {1, 0}}]
{1, 1}
MaxElement[{{0, 2}, {0, 1}, {2, 1}, {1, 0}}]
no clear maximum pair
或者您可以使用内部函数 MaximalBy
,例如
MaximalBy[{{0, 0}, {0, 1}, {1, 1}, {1, 0}}, Norm]
MaximalBy
的第二个参数是确定第一个参数中两个元素中哪个元素最大的函数。在这种情况下 returns
{{1,1}}
如果此规则未分隔所有元素,则它 returns 所有最大元素。所以
MaximalBy[{{0, 0}, {0, 1}, {1, 0}}, Norm]
returns
{{0,1},{1,0}}
但是 3 参数形式
MaximalBy[{{0, 0}, {0, 1}, {1, 0}}, Norm, 1]
returns 仅找到第一个最大元素。
有没有一种简单的方法可以从对列表中找到最大元素?基于列表构造(这些对应于坐标),有一个明确定义的最大值 {x_max, y_max}。例如,我正在寻找一个函数 MaxElement
MaxElement[{{0, 0}, {0, 1}, {1, 1}, {1, 0}}]
这将 return {1,1}
MaxElement[list_] := Module[{cases},
cases = Cases[list, Max /@ Transpose[list]];
If[cases == {}, "no clear maximum pair", First@cases]]
MaxElement[{{0, 0}, {0, 1}, {1, 1}, {1, 0}}]
{1, 1}
MaxElement[{{0, 2}, {0, 1}, {2, 1}, {1, 0}}]
no clear maximum pair
或者您可以使用内部函数 MaximalBy
,例如
MaximalBy[{{0, 0}, {0, 1}, {1, 1}, {1, 0}}, Norm]
MaximalBy
的第二个参数是确定第一个参数中两个元素中哪个元素最大的函数。在这种情况下 returns
{{1,1}}
如果此规则未分隔所有元素,则它 returns 所有最大元素。所以
MaximalBy[{{0, 0}, {0, 1}, {1, 0}}, Norm]
returns
{{0,1},{1,0}}
但是 3 参数形式
MaximalBy[{{0, 0}, {0, 1}, {1, 0}}, Norm, 1]
returns 仅找到第一个最大元素。