想象一下,我在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,还是有其他方法?
答案 0 :(得分:2)
使用展平
RankedMax[Flatten@myList,1]
答案 1 :(得分:2)
如果他只是在寻找表中所有数字中的第五大数字,那就没关系。如果,正如我怀疑的那样,他正在寻找第五大计算术语 - 每对中的第二个元素 - 我们应该稍微修改以前的解决方案:
RankedMax[Flatten@Map[Rest, myList, {2}], 5]