красиво распечатать матрицу в математике

У меня есть список списков (матрица) в математике. Я хочу распечатать его красиво, с максимальным значением в каждой строке, выделенным жирным шрифтом. Как это сделать?

А может еще дальше, с кругом вне такого макса, такое возможно?


person Qiang Li    schedule 11.02.2011    source источник


Ответы (2)


Вы можете использовать MatrixForm для красивой печати матриц:

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

data // MatrixForm

урожаи

MatrixForm image

Вы можете нарисовать круг вокруг максимума в каждом ряду следующим образом:

Map[# /. m : Max[#] :> Framed[m, RoundingRadius -> 1000]  &, data] //
  MatrixForm

уступающий

матрица с кругами

RoundingRadius -> 1000 использует смехотворно большой параметр для получения кругов. Возможно, вам придется настроить константу в зависимости от масштаба вашего дисплея.

Вы можете заменить Framed[m...] на Style[m, Bold], если предпочитаете полужирный шрифт.

person WReach    schedule 11.02.2011
comment
Мне нравится конструкция # /. m:Max[#] -> .... (+1) - person Simon; 11.02.2011

Сетка[ ] обеспечивает точную регулировку зернистости изображения на дисплее. Например:

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})}]  

введите здесь описание изображения

person Dr. belisarius    schedule 11.02.2011
comment
+1, мне понадобится некоторое время, чтобы понять, почему в вашем первом примере выделен только один элемент. - person rcollyer; 11.02.2011
comment
@rcollyer В этом нет никакой тайны. Ordering[l,-1] возвращает только один элемент. - person Dr. belisarius; 12.02.2011
comment
Ах я вижу. MapIndexed возвращает список с элементами вида {row_num, first_max_pos}-> {Bold, Red}. - person rcollyer; 12.02.2011