Qia*_* Li 8 wolfram-mathematica
我在mathematica中有一个列表(矩阵)列表.我想很好地打印出来,每一行都用粗体表示最大值.这该怎么做?
或者甚至可能更进一步,在这样的最大值之外的圆圈,这可能吗?
WRe*_*ach 19
您可以使用MatrixForm很好地打印出矩阵:
data = RandomInteger[100, {5, 5}];
data // MatrixForm
Run Code Online (Sandbox Code Playgroud)
产量

您可以在每行的最大值周围画一个圆,如下所示:
Map[# /. m : Max[#] :> Framed[m, RoundingRadius -> 1000] &, data] //
MatrixForm
Run Code Online (Sandbox Code Playgroud)
生产

RoundingRadius -> 1000使用一个可笑的大参数来获得圆圈.您可能需要根据显示器的比例调整常量.
您可以更改Framed[m...]用Style[m, Bold],如果你喜欢加粗.
Grid []为您提供精细的纹理控制.例如:
g[a_] := Grid[a,
Background -> {None, {{LightBlue, LightRed}}},
Dividers -> {False, All},
ItemStyle -> {Automatic, Automatic,
MapIndexed[Flatten@{#2, Ordering[#1, -1]} -> {Bold, Red} &, a]}]
g[RandomInteger[100, {10, 7}]]
Run Code Online (Sandbox Code Playgroud)

NB>它每行只会突出显示一个元素
编辑
要突出显示每个最大元素,您可以执行以下操作:
g[a_] := Grid[a,
Background -> {None, {{LightBlue, LightRed}}},
Dividers -> {False, All},
ItemStyle -> {Automatic, Automatic,
Flatten[Tuples[{First@#, Last@#}] & /@
MapIndexed[{#2, Position[#1, Max[#1]]} &, a],
1] /. {q_, {r_}} -> ({q, r} -> {Red, Bold})}]
Run Code Online (Sandbox Code Playgroud)
