我在mathematica中有一个列表(矩阵)列表。我想很好地打印出来,每一行都用粗体表示最大值。怎么做?
或者甚至可能更进一步,在这样的最大值之外有一个圆圈,这可能吗?
答案 0 :(得分:19)
您可以使用MatrixForm
很好地打印出矩阵:
data = RandomInteger[100, {5, 5}];
data // MatrixForm
产量
您可以在每行的最大值周围画一个圆圈,如下所示:
Map[# /. m : Max[#] :> Framed[m, RoundingRadius -> 1000] &, data] //
MatrixForm
产生
RoundingRadius -> 1000
使用了一个非常大的参数来获取圈子。您可能需要根据显示器的比例调整常量。
如果您更喜欢粗体,则可以使用Framed[m...]
更改Style[m, Bold]
。
答案 1 :(得分:8)
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}]]
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})}]