Python中自定义格式打印矩阵(含numpy数组与列表场景)
矩阵自定义格式输出解决方案
针对嵌套列表和numpy数组两种形式的矩阵,我们可以通过自定义格式化函数实现需求:
核心思路
- 将每个数字格式化为指定精度的科学计数法字符串,把
e替换为*^ - 用
{}包裹每一行的元素 - 最后用外层
{}包裹所有行
代码实现
通用格式化函数
def format_matrix(matrix): # 格式化单个数字:转8位小数科学计数法,替换e为*^ def format_num(num): return "{:.8e}".format(num).replace('e', '*^') # 处理每一行,生成{元素1, 元素2,...}格式的字符串 formatted_rows = [] for row in matrix: elements = [format_num(num) for num in row] formatted_rows.append(f"{{{', '.join(elements)}}}") # 拼接所有行,外层再套大括号 return f"{{{', '.join(formatted_rows)}}}"
测试嵌套列表
# 嵌套列表示例 a_list = [[1/10000009, 2, 3], [3, 4/3000897, 5]] print(format_matrix(a_list)) # 输出:{{9.99999100*^-08, 2.00000000*^+00, 3.00000000*^+00}, {3.00000000*^+00, 1.33293479*^-06, 5.00000000*^+00}}
测试numpy数组
只需将numpy数组转为嵌套列表后传入函数:
import numpy as np # numpy数组示例 a_np = np.array([[1/10000009, 2, 3], [3, 4/3000897, 5]]) print(format_matrix(a_np.tolist())) # 输出同上
说明
- 函数支持任意行数和列数的二维矩阵结构
- 精度可通过修改
"{:.8e}"中的数字调整,比如改为"{:.6e}"会保留6位小数 - 目标输出中的
1.33293479^*-06应为笔误,上述代码会输出正确的1.33293479*^-06
内容的提问来源于stack exchange,提问作者xiaohuamao
相关产品推荐
相关产品推荐

