Этот вопрос является продолжением предыдущей нити, чтобы сравнить два списка одинаковой длины:Любой эффективный простой способ найти максимальный список среди N списков с одинаковой длиной, используя Mathematica?
Is there any efficient easy way to compare two lists with the same length with Mathematica?
Учитывая два списка A={a1,a2,a3,...an}
и B={b1,b2,b3,...bn}
, я бы сказал A>=B
тогда и только тогда, когда все ai>=bi
. Теперь у нас есть k
списки H={{a11,a12,a13,...a1n}, {a21,a22,a23,...a2n},...,{ak1,ak2,ak3,...akn}}
, и мы хотим найти максимальный, если они есть.
Вот мой код:
Do[If[NonNegative[Min[H[[i]] - h]], h = H[[i]], ## &[]], {i, h = H[[1]]; 1, Length[H]}];h
Любой трюк лучше сделать это?
EDIT:
Я хочу, чтобы определить это как функция, как:
maxList[H_]:=Do[If[NonNegative[Min[H[[i]] - h]], h = H[[i]], ## &[]], {i, h = H[[1]]; 1, Length[H]}];h
Но вопрос код выше перекрестными двух линий, любое исправление для этого? Вот код работает, но не так красиво
maxList[H_] := Module[{h = H[[1]]}, Do[If[NonNegative[Min[H[[i]] - h]], h = H[[i]], ## &[]], {i, Length[H]}]; h]
или
maxList[H_]:=Last[Table[If[NonNegative[Min[H[[i]] - h]], h = H[[i]], ## &[]], {i, h = H[[1]]; 1, Length[H]}]]
Я не проверял стоимость «Пересечения». Хороший улов. –
Стоимость 'Intersection' и' MemberQ' зависит от размеров данных. Если вы сравните 'maxList' и' maxListFast' с данными 'Transpose [test]', ранжирование времени может быть отменено. – kglr
@ Mr.Wizard Спасибо за поддержку, я должен добавить аккуратный метод без модуля, но вы сделали это первым.Хотя оба метода кажутся очень похожими на производительность. – Artes