在Mathematica中找到对中列表中的最大对

时间:2017-12-12 21:21:51

标签: wolfram-mathematica

有没有一种简单的方法可以从配对列表中找到最大元素?基于列表构造(这些对应于坐标),存在明确定义的最大值{x_max,y_max}。例如,我正在寻找一个函数MaxElement

MaxElement[{{0, 0}, {0, 1}, {1, 1}, {1, 0}}]

将返回{1,1}

2 个答案:

答案 0 :(得分:5)

或者您可以使用内在函数[5,6],例如

MaximalBy

MaximalBy[{{0, 0}, {0, 1}, {1, 1}, {1, 0}}, Norm] 的第二个参数是用于确定第一个参数中的两个元素中的哪个元素是最大值的函数。在这种情况下,它返回

MaximalBy

如果此规则不分隔所有元素,则返回所有最大元素。所以

{{1,1}}

返回

MaximalBy[{{0, 0}, {0, 1}, {1, 0}}, Norm]

但是3参数形式

{{0,1},{1,0}}

仅返回找到的第一个最大元素。

答案 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