很好地在mathematica中打印出一个矩阵

Qia*_* Li 8 wolfram-mathematica

我在mathematica中有一个列表(矩阵)列表.我想很好地打印出来,每一行都用粗体表示最大值.这该怎么做?

或者甚至可能更进一步,在这样的最大值之外的圆圈,这可能吗?

WRe*_*ach 19

您可以使用MatrixForm很好地打印出矩阵:

data = RandomInteger[100, {5, 5}];

data // MatrixForm
Run Code Online (Sandbox Code Playgroud)

产量

MatrixForm图像

您可以在每行的最大值周围画一个圆,如下所示:

Map[# /. m : Max[#] :> Framed[m, RoundingRadius -> 1000]  &, data] //
  MatrixForm
Run Code Online (Sandbox Code Playgroud)

生产

矩阵与圆圈

RoundingRadius -> 1000使用一个可笑的大参数来获得圆圈.您可能需要根据显示器的比例调整常量.

您可以更改Framed[m...]Style[m, Bold],如果你喜欢加粗.


Dr.*_*ius 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}]]  
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)

在此输入图像描述

  • 啊,我明白了.`MapIndexed`返回一个列表,其中包含`{row_num,first_max_pos} - > {Bold,Red}`形式的元素. (2认同)