【Python百宝箱】优化 Python 中的科学计算与建模:从 SymPy 到 Optuna

掌握Python科学计算:符号运算、数值计算与模型优化

前言

本文将带您深入了解 Python 中一系列重要的科学计算与优化库。从 SymPy 提供的符号计算,到 scikit-optimize 的贝叶斯优化,再到 NumPy 和 SciPy 的数值计算和统计建模,以及利用 Statsmodels 进行回归分析和时间序列分析,再到 PyMC3 的贝叶斯统计建模,CVXPY 的凸优化建模,最后到 Optuna 实现的自动超参数优化。这篇文章将为您呈现 Python 科学计算领域的一场盛宴。

欢迎订阅专栏:Python库百宝箱:解锁编程的神奇世界

文章目录

  • 掌握Python科学计算:符号运算、数值计算与模型优化
    • 前言
      • 1. SymPy
        • 1.1 基础介绍
        • 1.2 应用领域
        • 1.3 应用场景 - 符号积分
        • 1.4 高级符号计算 - 极限
        • 1.5 符号级别的矩阵运算
        • 1.6 数值化 - 从符号到数值
      • 2. scikit-optimize
        • 2.1 基础介绍
        • 2.2 主要特性
        • 2.3 应用场景
        • 2.4 高级特性 - 多目标优化
        • 2.5 应用场景 - 机器学习超参数优化
        • 2.6 注意事项
      • 3. NumPy
        • 3.1 基础介绍
        • 3.2 主要功能
        • 3.3 应用领域
        • 3.4 数组和矩阵操作
        • 3.5 应用场景 - 科学计算
      • 4. SciPy
        • 4.1 基础介绍
        • 4.2 子模块
        • 4.3 应用场景
        • 4.4 数值积分和微分方程求解
        • 4.5 信号处理和统计分析
      • 5. Statsmodels
        • 5.1 基础介绍
        • 5.2 主要模块
        • 5.3 应用领域
        • 5.4 线性回归分析
        • 5.5 时间序列分析
        • 5.6 应用场景 - 统计建模
      • 6. PyMC3
        • 6.1 基础介绍
        • 6.2 主要特性
        • 6.3 应用场景
        • 6.4 贝叶斯线性回归
        • 6.5 概率编程 - 自定义模型
        • 6.6 应用场景 - 参数估计
      • 7. CVXPY
        • 7.1 基础介绍
        • 7.2 主要特性
        • 7.3 应用场景
        • 7.4 金融组合优化
        • 7.5 信号处理 - 低通滤波
        • 7.6 注意事项
      • 8. Optuna
        • 8.1 基础介绍
        • 8.2 主要特性
        • 8.3 应用场景
        • 8.4 自动超参数优化
        • 8.5 多目标优化
        • 8.6 应用场景 - 机器学习模型调优
    • 总结

1. SymPy

1.1 基础介绍

SymPy 是一个 Python 库,用于进行符号计算。它允许我们处理代数表达式和进行符号运算,提供了强大的数学计算功能。

from sympy import symbols, Eq, solve# 定义符号变量
x, y = symbols('x y')# 创建代数表达式和方程
expr = x + 2*y
equation = Eq(expr, 0)# 解方程
solution = solve(equation, x)
print(solution)
1.2 应用领域

SymPy 在数学符号计算方面非常有用,例如代数方程求解和微积分。以下是一个微积分的示例:

from sympy import diff# 对表达式进行微分
derivative = diff(expr, y)
print(derivative)
1.3 应用场景 - 符号积分

除了方程求解和微分,SymPy 也在符号积分中发挥了重要作用。以下是一个示例:

from sympy import integrate, sin# 对表达式进行符号积分
integral_result = integrate(sin(x), x)
print(integral_result)

这个例子中,SymPy 能够计算出 \( \int \sin(x) ,dx \) 的解析表达式,而不仅仅是数值结果。这种能力在数学推导和理论研究中非常有用。

SymPy 的符号计算功能使其在纯粹数学领域、工程学和科学研究中都有广泛的应用。

1.4 高级符号计算 - 极限

SymPy 不仅可以处理基本的代数运算、微积分和方程求解,还能进行高级的符号计算,比如计算极限。以下是一个计算极限的示例:

from sympy import limit, oo# 计算极限 lim(x->0) (sin(x)/x)
limit_result = limit(sin(x)/x, x, 0)
print(limit_result)

这个例子中,SymPy 能够计算出 \( \lim_{{x \to 0}} \frac{{\sin(x)}}{{x}} \) 的精确解。这对于数学中对函数在某一点的行为进行分析非常重要。

SymPy 的强大功能使其成为数学家、工程师和科学家进行符号计算和推导的理想工具。

1.5 符号级别的矩阵运算

SymPy 也支持符号级别的矩阵运算,这在线性代数的符号计算中非常有用。以下是一个示例:

from sympy import Matrix# 定义符号矩阵
A = Matrix([[1, x], [y, 2]])# 计算矩阵的逆
inverse_A = A.inv()
print("Inverse of A:")
print(inverse_A)# 计算矩阵的行列式
determinant_A = A.det()
print("\nDeterminant of A:")
print(determinant_A)

这个例子中,我们定义了一个符号矩阵 A,然后使用 SymPy 计算了它的逆矩阵和行列式。这种符号级别的矩阵运算在符号计算和线性代数推导中非常有用。

SymPy 的矩阵模块提供了丰富的功能,使得用户可以进行符号级别的线性代数运算,这对于工程、物理和数学领域的问题求解非常有帮助。

1.6 数值化 - 从符号到数值

尽管 SymPy 主要用于符号计算,但也提供了将符号表达式转换为数值的功能。这在需要数值结果进行进一步分析或绘图时非常有用。

# 将符号表达式转换为数值
numerical_result = limit_result.evalf()
print("Numerical result:", numerical_result)

在这个例子中,evalf() 方法将之前计算的极限结果从符号形式转换为数值形式。这使得我们可以方便地在数值上进行后续操作。

这种能够在符号和数值之间灵活切换的特性使得 SymPy 在符号计算和实际数值计算之间提供了平滑的过渡。

2. scikit-optimize

2.1 基础介绍

scikit-optimize 是一个基于贝叶斯优化的 Python 库,用于函数优化和参数调优。它通过建模目标函数的概率分布来选择下一个点进行评估。

from skopt import gp_minimize# 定义目标函数
def objective(params):x, y = paramsreturn x**2 + y**2# 使用贝叶斯优化进行函数优化
result = gp_minimize(objective, [(-2, 2), (-2, 2)])
print(result.x)
2.2 主要特性

scikit-optimize 主要用于函数优化和参数调优,其中 gp_minimize 使用高斯过程进行优化。

2.3 应用场景

该库广泛用于机器学习超参数优化,实验设计以及解决全局优化问题。

2.4 高级特性 - 多目标优化

scikit-optimize 不仅支持单目标优化,还具有在多个目标上进行优化的能力。这在实际问题中经常遇到,例如在机器学习中同时考虑模型的准确性和复杂度。

from skopt import gbrt_minimize
from skopt.space import Real# 定义带有多个目标的优化函数
def multi_objective(params):x, y = paramsobjective1 = x**2 + y**2objective2 = (x-1)**2 + y**2return [objective1, objective2]# 使用贝叶斯优化进行多目标优化
result = gbrt_minimize(multi_objective, [Real(-2, 2), Real(-2, 2)], n_calls=20, n_random_starts=5)print("Optimal Parameters:", result.x)
print("Optimal Objectives:", result.fun)

在这个例子中,multi_objective 函数返回一个列表,包含两个目标函数的值。gbrt_minimize 被用于多目标优化。结果中的 x 包含找到的最优参数,而 fun 包含找到的最优目标函数的值。

2.5 应用场景 - 机器学习超参数优化

scikit-optimize 在机器学习中广泛应用于超参数优化。以下是一个简单的示例,使用 RandomForestRegressor 进行回归,并使用 gp_minimize 对其超参数进行优化。

from skopt import gp_minimize
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split# 准备数据
X, y = ...  # 你的数据
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 定义机器学习模型的目标函数
def objective(params):n_estimators, max_depth = paramsmodel = RandomForestRegressor(n_estimators=int(n_estimators), max_depth=int(max_depth), random_state=42)model.fit(X_train, y_train)predictions = model.predict(X_test)mse = mean_squared_error(y_test, predictions)return mse# 使用贝叶斯优化进行超参数优化
result = gp_minimize(objective, [(10, 100), (1, 20)], n_calls=10, n_random_starts=5)print("Optimal Parameters:", result.x)

这个例子中,gp_minimize 用于最小化均方误差(MSE),从而找到最佳的超参数组合。这种方法比随机搜索更高效,特别是在高维参数空间中。

2.6 注意事项

在使用 scikit-optimize 进行优化时,需要注意函数的收敛性和计算成本。在选择优化方法和设置参数时,需要根据实际问题的特性来进行权衡。此外,建议在目标函数计算成本较高时使用合适的高斯过程优化方法,以充分利用先前评估的信息。

3. NumPy

3.1 基础介绍

NumPy 是一个强大的数学库,用于处理数组和矩阵操作。它提供了高性能的数学函数,适用于科学计算和数据处理。

import numpy as np# 创建 NumPy 数组
arr = np.array([1, 2, 3, 4, 5])# 进行数学运算
mean_value = np.mean(arr)
print(mean_value)
3.2 主要功能

NumPy 提供了丰富的数学函数和线性代数操作,例如 mean 函数用于计算平均值。

3.3 应用领域

主要应用于科学计算和数据处理。例如,可以使用 NumPy 进行数组运算和统计分析。

3.4 数组和矩阵操作

NumPy 的核心是多维数组对象(numpy.ndarray)。这使得它非常适用于数组和矩阵操作。

import numpy as np# 创建二维数组
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 计算矩阵的逆
inverse_matrix = np.linalg.inv(matrix)
print("Inverse of Matrix:")
print(inverse_matrix)# 计算矩阵的特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(matrix)
print("\nEigenvalues:")
print(eigenvalues)
print("Eigenvectors:")
print(eigenvectors)

这个例子中,numpy.linalg.inv 用于计算矩阵的逆,而 numpy.linalg.eig 用于计算矩阵的特征值和特征向量。

3.5 应用场景 - 科学计算

NumPy 在科学计算中被广泛应用,尤其是在处理大规模数据集和进行矩阵运算时。以下是一个简单的线性回归示例:

import numpy as np
import matplotlib.pyplot as plt# 生成示例数据
np.random.seed(42)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)# 使用 NumPy 进行线性回归
X_b = np.c_[np.ones((100, 1)), X]  # 在 X 前添加一列 1
theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)# 打印最佳参数
print("Best Parameters (Theta):", theta_best.ravel())# 绘制数据和拟合线
plt.scatter(X, y)
plt.plot(X, X_b.dot(theta_best), 'r-')
plt.xlabel('X')
plt.ylabel('y')
plt.show()

这个例子中,numpy.linalg.inv 用于计算矩阵的逆,实现了最小二乘法线性回归。

NumPy 提供了广泛的功能,使得它成为科学计算中的基础库。

4. SciPy

4.1 基础介绍

SciPy 是建立在 NumPy 基础上的库,提供了数学、科学和工程计算的功能。它包括多个子模块,涵盖了诸如积分、优化、信号处理等领域。

from scipy import integrate# 定义积分函数
def func(x):return x**2# 进行数值积分
result, error = integrate.quad(func, 0, 1)
print(result)
4.2 子模块

SciPy 的子模块包括积分、优化、信号处理等。

4.3 应用场景

常用于数值积分和微分方程求解,以及信号处理和统计分析。

4.4 数值积分和微分方程求解

SciPyintegrate 模块提供了丰富的数值积分和微分方程求解功能。以下是一个数值积分的例子:

from scipy import integrate# 定义积分函数
def func(x):return x**2# 进行数值积分
result, error = integrate.quad(func, 0, 1)
print("Numerical Integration Result:", result)

这个例子中,quad 函数用于对函数进行数值积分。

4.5 信号处理和统计分析

SciPysignal 模块提供了丰富的信号处理工具。以下是一个简单的信号滤波示例:

from scipy import signal
import matplotlib.pyplot as plt# 生成示例信号
t = np.linspace(0, 1, 1000, endpoint=False)
signal_input = np.cos(2 * np.pi * 7 * t) + np.random.normal(0, 0.5, 1000)# 使用 Butterworth 滤波器进行信号滤波
b, a = signal.butter(4, 0.1, 'low')
filtered_signal = signal.filtfilt(b, a, signal_input)# 绘制原始信号和滤波后的信号
plt.plot(t, signal_input, label='Original Signal')
plt.plot(t, filtered_signal, label='Filtered Signal')
plt.legend()
plt.show()

这个例子中,signal.butter 用于设计 Butterworth 滤波器,而 signal.filtfilt 用于对信号进行滤波。

SciPy 的丰富功能使其成为进行科学计算、工程计算和数据分析的强大工具。

5. Statsmodels

5.1 基础介绍

Statsmodels 是一个专注于统计模型和测试的库,提供了多种统计分析工具。其中,回归分析和时间序列分析是其重要的功能之一。

import statsmodels.api as sm
import numpy as np# 生成示例数据
x = np.random.rand(100)
y = 2*x + 1 + np.random.randn(100)# 进行线性回归分析
X = sm.add_constant(x)
model = sm.OLS(y, X)
results = model.fit()
print(results.summary())
5.2 主要模块

Statsmodels 主要包括用于回归分析、时间序列分析等的模块。

5.3 应用领域

广泛用于统计建模和实证经济学研究,提供了丰富的统计工具和模型。

5.4 线性回归分析

Statsmodels 的线性回归分析功能允许进行详细的回归分析,并提供了结果的统计信息。以下是一个简单的线性回归示例:

import statsmodels.api as sm
import numpy as np# 生成示例数据
x = np.random.rand(100)
y = 2*x + 1 + np.random.randn(100)# 进行线性回归分析
X = sm.add_constant(x)
model = sm.OLS(y, X)
results = model.fit()
print(results.summary())

在这个例子中,OLS 表示普通最小二乘法,用于拟合线性回归模型。results.summary() 提供了详细的回归分析结果,包括回归系数、拟合优度等。

5.5 时间序列分析

Statsmodelstsa 模块提供了丰富的时间序列分析工具。以下是一个简单的时间序列分析示例:

import statsmodels.api as sm
import pandas as pd# 生成示例时间序列数据
date_rng = pd.date_range(start='2022-01-01', end='2022-12-31', freq='D')
ts_data = pd.Series(np.random.randn(len(date_rng)), index=date_rng)# 进行时间序列分析
model = sm.tsa.ARIMA(ts_data, order=(1, 1, 1))
results = model.fit()
print(results.summary())

在这个例子中,ARIMA 表示自回归综合移动平均模型,用于拟合时间序列数据。

5.6 应用场景 - 统计建模

Statsmodels 主要用于统计建模,特别是在经济学和社会科学领域。通过提供详细的统计结果,它帮助研究人员理解变量之间的关系,并进行模型的检验和评估。

6. PyMC3

6.1 基础介绍

PyMC3 是一个用于贝叶斯统计建模的库,支持概率编程。它允许用户通过概率分布来描述模型,然后使用贝叶斯推断进行参数估计。

import pymc3 as pm
import numpy as np# 生成示例数据
np.random.seed(42)
data = np.random.randn(100)# 使用 PyMC3 进行贝叶斯线性回归
with pm.Model() as model:slope = pm.Normal('slope', mu=0, sd=1)intercept = pm.Normal('intercept', mu=0, sd=1)likelihood = pm.Normal('y', mu=slope * np.arange(100) + intercept, sd=1, observed=data)trace = pm.sample(2000, tune=1000)# 获取后验分布
pm.summary(trace)
6.2 主要特性

PyMC3 主要用于贝叶斯统计建模,支持概率编程,通过采样获取后验分布。

6.3 应用场景

主要用于贝叶斯统计建模和参数估计,特别适用于复杂模型的推断。

6.4 贝叶斯线性回归

PyMC3 可以用于建立贝叶斯线性回归模型,允许灵活地处理不确定性。

import pymc3 as pm
import numpy as np# 生成示例数据
np.random.seed(42)
data_x = np.random.randn(100)
data_y = 2 * data_x + 1 + np.random.randn(100)# 使用 PyMC3 进行贝叶斯线性回归
with pm.Model() as model:# 定义先验分布alpha = pm.Normal('alpha', mu=0, sd=10)beta = pm.Normal('beta', mu=0, sd=10)sigma = pm.HalfNormal('sigma', sd=1)# 定义线性关系mu = alpha + beta * data_x# 定义似然性likelihood = pm.Normal('y', mu=mu, sd=sigma, observed=data_y)# 采样trace = pm.sample(2000, tune=1000)# 获取后验分布
pm.summary(trace)

这个例子中,alphabeta 是回归系数的先验分布,sigma 是残差的标准差。trace 包含采样得到的后验分布,可以用于后续分析。

6.5 概率编程 - 自定义模型

PyMC3 支持概率编程,允许用户通过概率分布自定义模型。

import pymc3 as pm
import numpy as np# 生成示例数据
np.random.seed(42)
data = np.random.randn(100)# 使用 PyMC3 进行概率编程
with pm.Model() as model:# 定义模型参数mu = pm.Normal('mu', mu=0, sd=1)sigma = pm.HalfNormal('sigma', sd=1)# 定义似然性likelihood = pm.Normal('y', mu=mu, sd=sigma, observed=data)# 采样trace = pm.sample(2000, tune=1000)# 获取后验分布
pm.summary(trace)

在这个例子中,musigma 是模型的参数,而 likelihood 定义了观测数据的似然性。这种概率编程的方法可以灵活地适应不同类型的数据和模型。

6.6 应用场景 - 参数估计

PyMC3 主要用于参数估计和不确定性建模。通过灵活的概率编程方法,可以构建复杂的模型来捕捉数据中的潜在结构,并通过贝叶斯推断获取参数的后验分布。

7. CVXPY

7.1 基础介绍

CVXPY 是一个用于凸优化建模的库,支持声明性优化。它允许用户通过声明优化问题的形式来描述问题,然后使用底层优化器求解。

import cvxpy as cp# 定义优化变量
x = cp.Variable()
y = cp.Variable()# 构建优化问题
problem = cp.Problem(cp.Minimize(x + y), [x + 2*y >= 1])# 求解优化问题
problem.solve()# 获取结果
print("Optimal value:", problem.value)
print("Optimal x:", x.value)
print("Optimal y:", y.value)
7.2 主要特性

CVXPY 主要用于凸优化建模,支持声明性优化,简化了复杂优化问题的处理。

7.3 应用场景

广泛用于金融组合优化、信号处理等领域,解决线性和二次凸优化问题。

7.4 金融组合优化

CVXPY 在金融领域中被广泛应用,特别是在金融组合优化中。以下是一个简单的例子,使用 CVXPY 进行资产组合优化:

import cvxpy as cp
import numpy as np# 生成示例数据
np.random.seed(42)
returns = np.random.randn(5)
cov_matrix = np.random.randn(5, 5)# 定义优化变量
weights = cp.Variable(5)# 构建优化问题 - 最小化风险(方差)
risk = cp.quad_form(weights, cov_matrix)
objective = cp.Minimize(risk)# 约束条件 - 预期收益为 0.03
constraints = [cp.sum(weights) == 1, cp.sum(weights @ returns) >= 0.03]# 构建并求解优化问题
problem = cp.Problem(objective, constraints)
problem.solve()# 获取结果
print("Optimal Weights:", weights.value)
print("Optimal Risk:", problem.value)

这个例子中,通过最小化投资组合的风险(方差),同时满足预期收益的约束,得到了最优的资产权重。

7.5 信号处理 - 低通滤波

CVXPY 也可用于信号处理中的优化问题。以下是一个简单的低通滤波器设计示例:

import cvxpy as cp
import numpy as np
import matplotlib.pyplot as plt# 生成示例信号
t = np.linspace(0, 1, 100, endpoint=False)
signal_input = np.cos(2 * np.pi * 5 * t) + np.random.normal(0, 0.5, 100)# 定义优化变量
h = cp.Variable(11)# 构建优化问题 - 最小化低通滤波后的信号和原始信号的差异
smoothed_signal = cp.conv(h, signal_input)
objective = cp.Minimize(cp.norm(smoothed_signal - signal_input, 2))# 约束条件 - 限制滤波器系数的范围
constraints = [h >= 0, cp.sum(h) == 1]# 构建并求解优化问题
problem = cp.Problem(objective, constraints)
problem.solve()# 获取结果
print("Optimal Filter Coefficients:", h.value)# 绘制原始信号和滤波后的信号
plt.plot(t, signal_input, label='Original Signal')
plt.plot(t, smoothed_signal.value, label='Smoothed Signal')
plt.legend()
plt.show()

在这个例子中,通过最小化低通滤波后的信号和原始信号的差异,得到了最优的滤波器系数。

7.6 注意事项

在使用 CVXPY 时,需要注意优化问题的凸性,因为 CVXPY 主要用于凸优化。此外,对于大规模问题,选择适当的求解器也是至关重要的。

8. Optuna

8.1 基础介绍

Optuna 是一个用于自动超参数优化的库,支持多目标优化。它通过使用不同的算法自动搜索超参数空间,找到最佳配置。

import optuna# 定义优化目标函数
def objective(trial):x = trial.suggest_uniform('x', -10, 10)return (x - 2) ** 2# 创建 Optuna 优化器
study = optuna.create_study()
study.optimize(objective, n_trials=100)# 获取最佳参数
best_params = study.best_params
print("Best Parameters:", best_params)
8.2 主要特性

Optuna 主要用于自动超参数优化,支持多目标优化。

8.3 应用场景

广泛用于机器学习模型调优和实验设计,通过自动搜索超参数来提高模型性能。

8.4 自动超参数优化

Optuna 可以用于自动搜索超参数空间,找到使目标函数最小化(或最大化)的最佳配置。

import optuna# 定义优化目标函数
def objective(trial):x = trial.suggest_uniform('x', -10, 10)return (x - 2) ** 2# 创建 Optuna 优化器
study = optuna.create_study()
study.optimize(objective, n_trials=100)# 获取最佳参数
best_params = study.best_params
print("Best Parameters:", best_params)

这个例子中,trial.suggest_uniform 用于在指定范围内搜索超参数 x 的值,使目标函数最小化。study.best_params 包含找到的最佳参数。

8.5 多目标优化

Optuna 不仅支持单目标优化,还支持在多个目标上进行优化。以下是一个简单的多目标优化示例:

import optuna# 定义多目标优化目标函数
def multi_objective(trial):x = trial.suggest_uniform('x', -10, 10)y = trial.suggest_uniform('y', -10, 10)obj1 = x ** 2obj2 = (y - 2) ** 2return obj1, obj2# 创建 Optuna 优化器
study = optuna.create_study(directions=['minimize', 'minimize'])
study.optimize(multi_objective, n_trials=100)# 获取最佳参数
best_params = study.best_params
print("Best Parameters:", best_params)

在这个例子中,multi_objective 函数返回一个元组,包含两个优化目标。通过指定 directions 参数为 ['minimize', 'minimize'],告诉 Optuna 在两个目标上都进行最小化优化。

8.6 应用场景 - 机器学习模型调优

Optuna 在机器学习领域广泛用于模型调优。通过自动搜索超参数空间,可以更快地找到使模型性能最佳的超参数组合,提高模型的性能和泛化能力。

总结

通过学习这些库,读者将能够更加熟练地处理科学计算、统计建模和优化问题。这不仅将提高工作效率,还将使得在这些领域中的研究和实践更加得心应手。随着 Python 生态系统的不断发展,这些库将继续为科学家们提供更强大的工具,推动科学计算的发展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/202178.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unsupported class file major version xx

Java SE 和 Major Version 对应关系如下: Java SEMajor VersionHex18620x3E17610x3D16600x3C15590x3B14580x3A13570x3912560x3811550x3710540x369530x358520x347510x336.0500x325.0490x311.4480x301.3470x2F1.2460x2E1.1450x2D 修改对应SE和major关系可以解决如…

我一人全干!之vue3后台管理中的大屏展示。

使用大屏展示的时候有很多种场景,众多场景都是为了实现大屏自适应。 大屏,顾名思义,就是放在一个固定的屏幕上看的,即使你不做自适应,放在一个固定的屏幕上看也没啥问题,但是很多做大屏的是为了在PC端看&am…

Python中 长度判断与限制

#1.长度判断与限制 # "raise" 是一个 Python 中用于抛出异常的关键字这允许程序员在发生错误或不符合预期条件的情况下, # 提前终止程序的执行并给出相应的错误信息。 def ren(name: str, age: int):if len(name) > 3:raise ValueError("Name len…

【JAVA】Maven构建java-grpc-protobuf代码生成测试

本次是通过Maven工具构建Java测试工程,需要将原本通过gradle构建的项目需要通过maven构建加入公司代码库,通过Maven构建涉及到接下来要介绍的插件,总是发现pom.xml编译不通过,看到网上都是千篇一律的插件配置,自己就是…

MySQL 高级函数

1. MySQL 高级函数BIN(x) MySQL高级函数BIN(x)用于将一个整数转换为二进制字符串。 语法: BIN(x)示例: SELECT BIN(10);这将返回’1010’,表示整数10的二进制表示为1010。 2. MySQL 高级函数BINARY(s) MySQL高级函数BINARY(s)用于将字符…

软件产品研发过程 - 二、概要设计

软件产品研发过程 - 概要设计 相关系列文章 软件产品研发管理经验总结-管理细分 软件研发管理经验总结 - 事务管理 软件研发管理经验总结 - 技术管理 软件产品研发过程 - 二、概要设计 目录 软件产品研发过程 - 概要设计一、概要设计概述二、概要设计过程1、模块概述2、应用场景…

68从零开始学Java之Set集合都有哪些特性

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在上一篇文章中,壹哥带大家学习了List集合的用法和特性,尤其是对ArrayList和L…

halcon如何查看图像金字塔层数的图像

*计算图像高斯金字塔,每层为原来1/2,得到N层金字塔 gen_gauss_pyramid (Image, ImagePyramid, constant, 0.5) *查看金字塔一共有多少层 count_obj (ImagePyramid, Number) *获取第几层的图像 select_obj (ImagePyramid, ObjectSelected, 7)

无人奶柜:零售业的自助革命

无人奶柜:零售业的自助革命 无人奶柜作为零售业的一项创新技术,正在改变人们购买奶制品的方式,并对零售业产生深远的影响。它的出现提供了更便捷、高效、便利的购物体验,节省了人力成本,同时也为零售商带来了创新机会和…

大师学SwiftUI第18章Part3 - 自定义视频播放器

视频 录制和播放视频对用户来说和拍照、显示图片一样重要。和图片一样,Apple框架中内置了播放视频和创建自定义播放器的工具。 视频播放器 SwiftUI定义了​​VideoPlayer​​视图用于播放视频。该视图提供了所有用于播放、停止、前进和后退的控件。视图包含如下初…

Notes数据结合报表工具Tableau

大家好,才是真的好。 我希望你看过前面两篇内容《Domino REST API安装和运行》和《Domino REST API安装和运行》,更希望你能看过《Notes数据直接在Excel中统计!》,有了这些内容作为基础,今天的内容就显得特别简单。 …

Freertos任务管理

一.任务状态理论讲解 正在执行的任务状态是running,其他执行的等待执行的任务状态是ready 1.修改间隔时间 2.任务状态 处于各个状态的任务是怎样被管理起来的:链表 3.代码 TaskHandle_t xHandleTask1; TaskHandle_t xHandleTask3;static int task1f…

6个实用又好用的交互原型工具!

在 UI/UX 设计中,原型设计是至关重要的一步。正如用户体验中的其它环节一样,有无数的交互原型工具可以帮助你完成原型设计。市场上有太多的交互原型工具,如果你不知道选择哪一种,那么我们将为你介绍 6 个实用又好用的交互原型工具…

Multidimensional Scaling(MDS多维缩放)算法及其应用

在这篇博客中,我将与大家分享在流形分析领域的一个非常重要的方法,即多维缩放MDS。整体来说,该方法提供了一种将内蕴距离映射到显性欧氏空间的计算,为非刚性形状分析提供了一种解决方案。当初就是因为读了Bronstein的相关工作【1】…

智能优化算法应用:基于鼠群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于鼠群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于鼠群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鼠群算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

6页手写笔记总结信号与系统常考知识大题知识点

题型一 判断系统特性题型二 求系统卷积题型三 求三大变换正反变换题型四 求全响应题型五 已知微分方程求系统传递函数题型六 已知系统的传递函数求微分方程题型七 画出系统的零极点图,并判断系统的因果性和稳定性 (笔记适合快速复习,可能会有…

2023 年最新 FPV 套件评测

FPV 飞行是近年来非常流行的一种新兴运动。它可以让您在第一人称视角下体验飞行的乐趣。FPV 套件可以分为多种类型,根据您的需求和预算,您可以选择合适的套件。 下面我们将对 2023 年最新的几款 FPV 套件进行评测,帮助您选择合适的产品。 Sp…

InST论文复现

论文地址:https://arxiv.org/abs/2211.13203 论文git:https://github.com/zyxElsa/InST 遇到的问题: 1.requests.exceptions.SSLError: HTTPSConnectionPool(hosthuggingface.co, port443): Max retries exceeded with url: /openai/clip-…

一个容器中填值,值太多不换行,而是调小字体大小和行高

<!-- clampLineHeight 重计算行高 --> <!-- clampTextSize 重计算字体大小 --> <!-- 这里的div高8mm, 宽6cm, 文本为text --> <div style"height:8mm;width:6cm;text-align:left"><span :style"{ fontSize: clampTextSize(text, 6cm…

用python测试网络上可达的网络设备

用python测试网络上可达的网络设备 之前使用的os在python中执行ping测试网络中可达的目标&#xff0c;但是他在执行ping命令时脚本会将系统执行ping时的回显内容显示出来&#xff0c;有时这些回显并不是必要的。如果用脚本一次性ping成百上千台网络设备或者URL时会影响美观和阅…