如何在 Jupyter 笔记本的 LaTeX 中自定义格式化 numpy 数组列括号的显示?
How to custom-format the display of numpy array column brackets, in LaTeX for Jupyter notebook?
我正在 deeplearning.ai 学习深度学习。在本课程中,Andrew 将训练示例堆叠在如下列中。
numpy 实际上是这样打印数组的。
我的问题是,如何自定义 numpy 的输出如下
也就是说,有内部方括号 'longer' 来覆盖整个列。
如有任何回应,我们将不胜感激。
感谢 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}等latex符号占用了python格式{},如何解决?如有任何回复,我们将不胜感激。
这是一个使用 unicode 将矩阵显示为列的小函数。我不知道如何将其连接到 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⎦⎦
我正在 deeplearning.ai 学习深度学习。在本课程中,Andrew 将训练示例堆叠在如下列中。
numpy 实际上是这样打印数组的。
我的问题是,如何自定义 numpy 的输出如下
也就是说,有内部方括号 'longer' 来覆盖整个列。
如有任何回应,我们将不胜感激。
感谢 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}等latex符号占用了python格式{},如何解决?如有任何回复,我们将不胜感激。
这是一个使用 unicode 将矩阵显示为列的小函数。我不知道如何将其连接到 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⎦⎦