5.2Python数据处理篇之Sympy系列(二)---Sympy的基本操作

目录

前言

符号化运算也是数值运算中的一个主要的领域,今天我们来学习以下,python里强大的符号运算库---sympy。今天讲的是第一讲,sympy的操作。

对应于官网的:Basic Operations

Basic Operation s:

Basic Operations — SymPy 1.10.1 documentation

(一)符号的初始化与输出设置-symbol() symbols() latex()

1.作用:

在sympy里进行符号运算之前,必须先定义sympy的符号,这样sympy才能识别该符号。

.init_printing(use_latex=True)开启时,在jupyter运行时,输出的是LaTeX的格式

使用:latex()函数,同样返回LaTeX的格式。

2.操作:

(1)说明:

符号的初始化分为两种形式:

  1. 单个符号的初始化:x = sympy.Symbol('x')
  2. 多个符号的初始化:x,y=sympy.symbol("x y")

(2)源代码:

import sympy as sy

# 符号化变量
x = sy.Symbol('x')
y, z = sy.symbols('y z')

# 输出设置
sy.init_printing(use_latex=True)

# 输出结果
print("x:", type(x))
print("y:", type(y))
print(x**2+y+z)
print(sy.latex(x**2+y+z))

(3)输出效果

(二)替换符号-subs(old,new)

1.说明:

sub是Substitution的简称,也就是替换,其有两个作用:

语法是:expr.sub(old,new)

  1. 数值替换,用数值替换符号,进行带入计算。
  2. 符号替换,用一些符号替换符号。

2.源代码:

from sympy import *

# 符号化变量
x, y, z = symbols('x y z')

expr = x**2+1

# 数值替换
result = expr.subs(x, 2)
print("原式:", expr)
print("数值计算的结果:", result)

# 符号替换
new_expr = expr.subs(x, y+z)
print("符号替换的结果:", new_expr)

3.输出效果:

4.注意点:

(1)是否改变原表达式

subs()函数不改变原表达式,并且返回一个修改的表达式。

(2)替换多个表达式

当需要替换多个表达式时,可以在subs()里使用列表

如:subs([(x,2), (y, 3), (z, 4)])

表示:将x替换成2,y替换成3,z替换成4

(三)将字符串变为sympy的表达式-sympify()

1.说明:

不要混淆了sympify()函数与 simplify()函数,前者是转化,后者是简化。

2.源代码:

from sympy import *

string = "x**2+2*y + z/2"

# 转化
expr = sympify(string)

print("类型:", type(expr))
print("表达式:", expr)

3.输出效果:

(四)数值计算-evalf()

1.说明:

相当于python自带的eval()函数,只是进行的是float浮点数运算。

2.操作:

(1)对于数值表达式的运算

直接使用.evalf()函数

from sympy import *

expr = sqrt(8)

# 进行计算
result = expr.evalf()

print(result)

(2)对于符号表达式的运算

对于表达式常用的是:

.evalf(subs={x: 2.4})

from sympy import *

# 符号化
x = Symbol('x')

# 进行计算
expr = x**2+3
result = expr.evalf(subs={x: 2})

print(result)

(五)自定义表达式-lambdify()

1.说明:

该函数有点类似于lambda(),用于自己构造一个函数表达

2.源代码:

from sympy import *
import numpy as np

x = Symbol('x')

a = np.arange(10)

expr = x**2

# 构造自己的函数
f = lambdify(x, expr, "numpy")

print(f(a))

3.输出效果:

作者:Mark

日期:2019/03/15 周五

1
«  上一篇: 5.1Python数据处理篇之Sympy系列(一)---Sympy的大体认识
»  下一篇: 5.3Python数据处理篇之Sympy系列(三)---简化操作
PS D:\yolo\ultralytics-v8.3.40> & C:/anaconda/envs/yolov11_11/python.exe d:/yolo/ultralytics-v8.3.40/ultralytics-v8.3.40/datasets/dan/on.py Ultralytics 8.3.40 🚀 Python-3.11.9 torch-2.7.0+cu126 CPU (12th Gen Intel Core(TM) i7-12650H) YOLOv11n summary (fused): 238 layers, 2,582,347 parameters, 0 gradients, 6.3 GFLOPs PyTorch: starting from 'D:\yolo\ultralytics-v8.3.40\runs\detect\train6\weights\best.pt' with input shape (1, 3, 640, 640) BCHW and output shape(s) (1, 5, 8400) (5.2 MB) requirements: Ultralytics requirements ['onnx>=1.12.0', 'onnxslim', 'onnxruntime'] not found, attempting AutoUpdate... Looking in indexes: https://mirrors.ustc.edu.cn/pypi/web/simple Requirement already satisfied: onnx>=1.12.0 in c:\anaconda\lib\site-packages (1.14.1) Requirement already satisfied: onnxslim in c:\anaconda\lib\site-packages (0.1.53) Requirement already satisfied: onnxruntime in c:\anaconda\lib\site-packages (1.14.1) Requirement already satisfied: numpy in c:\anaconda\lib\site-packages (from onnx>=1.12.0) (1.21.6) Requirement already satisfied: protobuf>=3.20.2 in c:\anaconda\lib\site-packages (from onnx>=1.12.0) (4.24.4) Requirement already satisfied: typing-extensions>=3.6.2.1 in c:\anaconda\lib\site-packages (from onnx>=1.12.0) (4.7.1) Requirement already satisfied: sympy in c:\anaconda\lib\site-packages (from onnxslim) (1.1.1) Requirement already satisfied: packaging in c:\anaconda\lib\site-packages (from onnxslim) (17.1) Requirement already satisfied: coloredlogs in c:\anaconda\lib\site-packages (from onnxruntime) (15.0.1) Requirement already satisfied: flatbuffers in c:\anaconda\lib\site-packages (from onnxruntime) (25.2.10) Requirement already satisfied: humanfriendly>=9.1 in c:\anaconda\lib\site-packages (from coloredlogs->onnxruntime) (10.0) Requirement already satisfied: pyparsing>=2.0.2 in c:\anaconda\lib\site-packages (from packaging->onnxslim) (2.2.0) Requirement already satisfied: six in c:\anaconda\lib\site-packages (from packaging->onnxslim) (1.11.0) Requirement already satisfied: pyreadline in c:\anaconda\lib\site-packages (from humanfriendly>=9.1->coloredlogs->onnxruntime) (2.1) requirements: AutoUpdate success ✅ 1.4s, installed 3 packages: ['onnx>=1.12.0', 'onnxslim', 'onnxruntime'] requirements: ⚠️ Restart runtime or rerun command for updates to take effect ONNX: export failure ❌ 1.5s: No module named 'onnx' Traceback (most recent call last): File "d:\yolo\ultralytics-v8.3.40\ultralytics-v8.3.40\datasets\dan\on.py", line 7, in model.export(format='onnx') File "C:\anaconda\envs\yolov11_11\Lib\site-packages\ultralytics\engine\model.py", line 737, in export return Exporter(overrides=args, _callbacks=self.callbacks)(model=self.model) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\anaconda\envs\yolov11_11\Lib\site-packages\ultralytics\engine\exporter.py", line 359, in call f[2], _ = self.export_onnx() ^^^^^^^^^^^^^^^^^^ File "C:\anaconda\envs\yolov11_11\Lib\site-packages\ultralytics\engine\exporter.py", line 146, in outer_func raise e File "C:\anaconda\envs\yolov11_11\Lib\site-packages\ultralytics\engine\exporter.py", line 141, in outer_func f, model = inner_func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\anaconda\envs\yolov11_11\Lib\site-packages\ultralytics\engine\exporter.py", line 452, in export_onnx import onnx # noqa ^^^^^^^^^^^ ModuleNotFoundError: No module named 'onnx' PS D:\yolo\ultralytics-v8.3.40>
最新发布
05-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值