You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sympy矩阵操作:如何始终先打印变量,后打印常数?

SymPy矩阵表达式调整:变量在前、常数在后且无空格输出

需求说明

  • 矩阵运算后,表达式变量保持字母顺序(已满足)
  • 输出无空格
  • 所有常数项放在表达式末尾
  • 最终输出格式为类似 '-x+1/2,-x+y,-z+1/2' 的字符串并写入文件

解决方案

通过自定义表达式重排函数,分离变量项与常数项,调整顺序后再格式化输出。以下是修改后的完整代码:

import sympy
from sympy import symbols, Matrix, Rational, pprint
from sympy import init_printing
init_printing()

def rearrange_expr(expr):
    # 拆分表达式各项
    terms = expr.as_ordered_terms()
    # 分离变量项和常数项
    var_terms = [term for term in terms if not term.is_constant()]
    const_terms = [term for term in terms if term.is_constant()]
    # 重新组合:变量项在前,常数项在后
    rearranged = sum(var_terms) + sum(const_terms)
    # 去除空格并返回字符串
    return str(rearranged).replace(' ', '')

# 原矩阵运算部分
mm = Matrix([[-1,0,0], [-1,1,0], [0,0,-1]])
tt = Matrix([Rational(6,12), Rational(0,12), Rational(6,12)])

x, y, z = symbols('x y z')
r = Matrix([x, y, z])

rp = mm * r + tt

# 处理每个元素并生成目标字符串
formatted_items = [rearrange_expr(item) for item in rp]
final_output = ','.join(formatted_items)

# 打印验证
print("调整后的矩阵表达式:")
pprint(Matrix(formatted_items))
print("\n最终目标格式输出:")
print(final_output)

# 写入文件
with open('matrix_output.txt', 'w') as f:
    f.write(final_output)

效果验证

  • 原输出:
⎡1/2 - x⎤
⎢       ⎥
⎢-x + y ⎥
⎢       ⎥
⎣1/2 - z⎦
  • 调整后输出:
⎡-x+1/2⎤
⎢      ⎥
⎢-x+y  ⎥
⎢      ⎥
⎣-z+1/2⎦
  • 最终目标字符串:'-x+1/2,-x+y,-z+1/2'

内容的提问来源于stack exchange,提问作者masher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 10:20:41