如何在Jupyter Notebook的LaTeX中自定义NumPy数组列括号显示格式?
自定义NumPy数组输出为列堆叠矩阵(匹配Andrew Ng课程风格)
刚好我也碰到过这个需求!在deeplearning.ai的深度学习课程里,Andrew Ng习惯把训练样本按列堆叠成矩阵展示,但NumPy默认的数组打印格式没法直观体现每一列作为独立样本的结构——默认的方括号只包裹整个数组,看不到每列的边界。
受smci的思路启发,我们可以借助LaTeX的排版能力,在IPython/Jupyter环境里渲染出带整列方括号的矩阵,完美匹配课程里的展示效果。下面是完整的实现方案:
步骤1:导入必要模块
首先需要导入NumPy和IPython的渲染工具:
import numpy as np from IPython.display import display, Math
步骤2:编写矩阵转换与渲染代码
我们可以把NumPy数组转换成LaTeX格式的矩阵,让每一列都被独立的方括号包裹:
# 示例:2个特征、3个样本的矩阵(对应课程里的X矩阵) X = np.array([[135, 142, 128], [30, 28, 32]]) # 生成LaTeX代码:构建带列方括号的矩阵 latex_template = r'\begin{align}\quad\boldsymbol X = \begin{bmatrix}' # 遍历每一列(转置X后取行就是原数组的列) for col in X.T: # 把列向量转换成LaTeX列向量格式 col_latex = r'\begin{bmatrix}' + r' \\ '.join(map(str, col)) + r'\end{bmatrix}' latex_template += col_latex + r' & ' # LaTeX矩阵中用&分隔列 # 去掉末尾多余的&和空格,补全LaTeX结构 latex_template = latex_template[:-2] + r'\end{bmatrix}\end{align}' # 在IPython环境中渲染显示 display(Math(latex_template))
效果说明
运行这段代码后,你会看到和课程里一致的矩阵展示:每个样本作为一列,列的方括号完整覆盖整列的所有元素,视觉上非常清晰。
这种方法的优势在于:
- 完全匹配课程中的矩阵展示风格,避免了NumPy默认输出的混淆
- 借助LaTeX的排版能力,即使是高维度数组也能保持良好的可读性
- 代码逻辑简单,容易扩展(比如添加数字格式化、调整对齐方式等)
内容的提问来源于stack exchange,提问作者user1629342
相关产品推荐
相关产品推荐

