2

Mathematica に数値の 2D リストがあるとします。

myList = Table[{i,i*j},{i,1,10},{j,1,10}];

5 番目に高い値を効率的に取得したいと考えています。RankedMax を使用するとエラーが発生します。例えば、

Max[myList]

100を与えますが:

RankedMax[myList,1]

与える:

 RankedMax::vec :  "Input {{{1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6}, \

{1, 7}, {1, 8}, {1, 9}, {1, 10}}, {{2, 2}, {2, 4}, {2, 6}, {2, 8}, {2, 10}, \

{2, 12}, {2, 14}, {2, 16}, {2, 18}, {2, 20}}, 6, {{9, 9}, {9, 18}, {9, 27}, \

{9, 36}, {9, 45}, {9, 54}, {9, 63}, {9, 72}, {9, 81}, {9, 90}}, {{10, 10}, \

{10, 20}, {10, 30}, {10, 40}, {10, 50}, {10, 60}, {10, 70}, {10, 80}, {10, \

90}, {10, 100}}} is not a vector

自分のデータで RankedMax を使用するにはどうすればよいですか? または他の方法はありますか?

4

2 に答える 2

2

フラット化を使用

RankedMax[Flatten@myList,1]
于 2013-10-30T06:35:30.560 に答える
2

テーブル内のすべての数値の中で 5 番目に大きい数値を探しているだけであれば、これで問題ありません。私が推測するように、彼が計算された項の 5 番目に大きい項 (各ペアの 2 番目の要素) を探している場合は、前の解を次のように少し修正する必要があります。

RankedMax[Flatten@Map[Rest, myList, {2}], 5]
于 2013-11-04T23:28:24.077 に答える