Как отформатировать отображение скобок столбцов с пустым массивом в LaTeX для ноутбука Jupyter? - PullRequest
0 голосов
/ 26 апреля 2018

Я изучаю DL на deeplearning.ai.В этом курсе Эндрю складывает обучающие примеры в столбцы, подобные следующим.

enter image description here

, где numpy фактически печатает массив, подобный этому.

enter image description here

Мой вопрос заключается в том, как настроить вывод numpy следующим образом:

enter image description here

, то естьвнутренние квадратные скобки «длиннее», чтобы охватить весь столбец.

любой ответ будет оценен.

Благодаря вдохновению smci я получил это.

from IPython.display import display, Math
display(Math(r'\begin{align}\quad\boldsymbol X=\begin{bmatrix}\begin{bmatrix}135 \\30 \\\end{bmatrix},\begin{bmatrix}57 \\15 \\\end{bmatrix},\begin{bmatrix}150 \\35 \\\end{bmatrix}\end{bmatrix}\end{align}'))

Еще один вопроспоказывает:

Латексная нотация, такая как {align}, занимает формат python {}, как это решить?Любой ответ будет оценен.

1 Ответ

0 голосов
/ 26 апреля 2018

Вот небольшая функция, которая использует юникод для отображения матрицы в виде столбцов.Как подключить это к Jupyter, я не знаю:

>>> def pretty_col(data):
...     assert data.ndim == 1
...     if data.size <= 1:
...         return format(data)
...     else:
...         return format(data[:, None])[1:-1].replace('[', '\u23A1', 1).replace(' [', '\u23A2', data.size-2).replace(' [', '\u23A3').replace(']', '\u23A4', 1).replace(']', '\u23A5', data.size-2).replace(']', '\u23A6')
...
>>> def pretty_cols(data, comma=False):
...     assert data.ndim == 2
...     if comma:
...         return '\n'.join(line[0] + line + line[-1] for line in map(str.join, data.shape[0] // 2 * ('  ',) + (', ',) + (data.shape[0] - 1) // 2 * ('  ',), zip(*map(str.split, map(pretty_col, data.T), data.shape[1]*('\n',)))))
...     else:
...         return '\n'.join(line[0] + line + line[-1] for line in map(''.join, zip(*map(str.split, map(pretty_col, data.T), data.shape[1]*('\n',)))))

...
>>> print(pretty_cols(np.arange(-1, 2, 0.25).reshape(4, 3)))
⎡⎡-1.  ⎤⎡-0.75⎤⎡-0.5 ⎤⎤
⎢⎢-0.25⎥⎢ 0.  ⎥⎢ 0.25⎥⎥
⎢⎢ 0.5 ⎥⎢ 0.75⎥⎢ 1.  ⎥⎥
⎣⎣ 1.25⎦⎣ 1.5 ⎦⎣ 1.75⎦⎦
>>> 
>>> print(pretty_cols(np.arange(-1, 2, 0.25).reshape(4, 3), True))
⎡⎡-1.  ⎤  ⎡-0.75⎤  ⎡-0.5 ⎤⎤
⎢⎢-0.25⎥  ⎢ 0.  ⎥  ⎢ 0.25⎥⎥
⎢⎢ 0.5 ⎥, ⎢ 0.75⎥, ⎢ 1.  ⎥⎥
⎣⎣ 1.25⎦  ⎣ 1.5 ⎦  ⎣ 1.75⎦⎦
...