【数学建模学习手册】python基本入门使用

news2024/9/20 20:33:27

本专栏内容为:数学建模原理 记录学习数学建模

💓博主csdn个人主页:小小unicorn
⏩专栏分类:数学建模
🚚代码仓库:小小unicorn的代码仓库🚚
🌹🌹🌹关注我带你学习编程知识

目录

  • numpy库
    • 导入
    • 数组创建
      • 示例1:
      • 示例2:
    • 数组元素索引:
      • 示例:
    • 矩阵运算与线性代数
    • 求解线性方程组的唯一解
      • 例1:求解线性方程组:
    • 求超定方程组的最小二乘解
      • 例2:求解线性方程组:
        • 第一种:
        • 第二种:
        • 两种方法的比较:
      • 什么是超定方程?
    • 求矩阵的特征值特征向量:
  • Pandas库
    • 生成二维数组:
    • 读写文件
    • 数据预处理:
  • SciPy库
    • 求解非线性方程组
    • 积分:
    • 最小二乘解
    • 求矩阵最大模特征值与特征向量
  • SymPy库
    • 例1:求符号解
    • 例2:求符号解
    • 例3:求矩阵的特征值与特征向量(符号解)
  • Matplotlib库
    • 子图:
    • 三维绘图
      • 例1:三维曲线

numpy库

导入

import numpy as 

数组创建

在这里插入图片描述

示例1:

import numpy as np
a1 = np.array([1, 2, 3, 4])   #生成整型数组
a2 = a1.astype(float)
a3 = np.array([1, 2, 3, 4], dtype=float)   #浮点数
print(a1.dtype); print(a2.dtype); print(a3.dtype)
b = np.array([[1, 2, 3], [4, 5, 6]])
c = np.arange(1,5)        #生成数组[1, 2, 3, 4]
d = np.linspace(1, 4, 4)  #生成数组[1, 2, 3, 4]
e = np.logspace(1, 3, 3, base=2)  #生成数组[2, 4, 8]
print(b)
print(c)
print(d)
print(e)

示例2:

import numpy as np
a = np.ones(4, dtype=int)     #输出[1, 1, 1, 1]
b = np.ones((4,), dtype=int)  #同a
c= np.ones((4,1))             #输出4行1列的数组
d = np.zeros(4)               #输出[0, 0, 0, 0]
e = np.empty(3)               #生成3个元素的空数组行向量
f = np.eye(3)                 #生成3阶单位阵
g = np.eye(3, k=1)  #生成第k对角线的元素为1,其他元素为0的3阶方阵
h = np.zeros_like(a)          #生成与a同维数的全0数组

数组元素索引:

在这里插入图片描述

示例:

import numpy as np
a = np.arange(16).reshape(4,4)  #生成4行4列的数组
b = a[1][2]   #输出6
c = a[1, 2]   #同b
d = a[1:2, 2:3]  #输出[[6]]
x = np.array([0, 1, 2, 1])
print(a[x==1])  #输出a的第2、4行元素

在这里插入图片描述

矩阵运算与线性代数

线性代数只要使用numpy.linalg模块,其常用函数如下:
在这里插入图片描述

求解线性方程组的唯一解

例1:求解线性方程组:

在这里插入图片描述
代码:

import numpy as np
a = np.array([[3, 1], [1, 2]])
b = np.array([9, 8])
x1 = np.linalg.inv(a) @ b  #第一种解法
#上面语句中@表示矩阵乘法
x2 = np.linalg.solve(a, b) #第二种解法
print(x1); print(x2)

结果:
在这里插入图片描述

求超定方程组的最小二乘解

例2:求解线性方程组:

在这里插入图片描述
代码:

第一种:
import numpy as np
a = np.array([[3, 1], [1, 2], [1, 1]])
b = np.array([9, 8, 6])
#a*b
x = np.linalg.pinv(a) @ b  
print("求得的最小二乘解为:")
print(np.round(x, 4))
第二种:

使用 lstsq 求解最小二乘问题:

  • a: 系数矩阵。
  • b: 右侧的结果向量。
  • rcond: 用来裁剪奇异值的一个参数(可以先设置为 None,默认行为会使用合理的值)

lstsq 函数返回四个值:

  • x: 最小二乘解,即满足 a @ x ≈ b 的解。
  • residuals: 残差的平方和。如果方程是过定的(更多的方程比未知数多),这个值才有意义。
  • rank: 矩阵 a 的秩。
  • s: a 的奇异值。
import numpy as np
a = np.array([[3, 1], [1, 2], [1, 1]])
b = np.array([9, 8, 6])
x, residuals, rank, s = np.linalg.lstsq(a, b, rcond=None)
print("求得的最小二乘解为:")
#round对数组中的每个元素进行四舍五入。4就是保留四位
print(np.round(x, 4))
两种方法的比较:
  • pinv 方法:先通过 np.linalg.pinv(a) 求解 a 的伪逆矩阵,再用矩阵乘法 @ 乘以向量 b 来得到最小二乘解。适合直接计算伪逆矩阵的场合。

  • lstsq 方法:直接求解最小二乘解,它比伪逆法更高效,因为它不需要显式计算伪逆矩阵,并且提供了残差、矩阵秩等额外信息。

  • 在数值精度和计算效率上,lstsq 通常表现得更好,尤其是当矩阵 a 较大时

结果:
在这里插入图片描述

什么是超定方程?

超定线性方程组(overdetermined system of linear equations)指的是方程的数量多于未知数的线性方程组。这意味着方程的数量 mmm 大于未知数的数量 nnn(即 m>nm > nm>n)。

特点:

  • 方程数量多于未知数:这类方程组往往没有精确的解,因为过多的方程对未知数施加了更多的约束条件,这些条件可能互相矛盾,无法同时满足。
  • 无法精确求解:由于不可能满足所有方程,通常需要使用最小二乘法等数值方法来找到使方程“近似成立”的解。这种解不是精确解,而是尽可能让方程残差(误差)最小的解。

例子:
在这里插入图片描述
在这里插入图片描述

求矩阵的特征值特征向量:

例1:
在这里插入图片描述
代码:

import numpy as np

#它创建一个 4x4 的单位矩阵
#单位矩阵的定义是:对角线上(从左上到右下)所有元素为 1,其余元素为 0。
a = np.eye(4)
# a = [[1. 0. 0. 0.]
#      [0. 1. 0. 0.]
#      [0. 0. 1. 0.]
#      [0. 0. 0. 1.]]


#将矩阵逆时针旋转 90 度
b = np.rot90(a)
# b = [[0. 0. 0. 1.]
#      [0. 0. 1. 0.]
#      [0. 1. 0. 0.]
#      [1. 0. 0. 0.]]

#如果想顺时针旋转90度,加上一个参数k=-1;
# b=np.rot90(a,-1)
# b = [[0. 0. 0. 1.]
#      [0. 0. 1. 0.]
#      [0. 1. 0. 0.]
#      [1. 0. 0. 0.]]

#顺时针旋转与逆时针旋转的关系:
#顺时针旋转 90 度相当于逆时针旋转 270 度。因此,你也可以通过 np.rot90(a, k=3) 达到相同的效果。
c, d = np.linalg.eig(b)
print('特征值为:', c)
print('特征向量为:\n', d)

结果:
在这里插入图片描述

Pandas库

在这里插入图片描述

生成二维数组:

例1:生成服从标准正态分布的24x4随机数矩阵,并保存为DataFrame数据结构

import pandas as pd
import numpy as np

# 创建数据
dates = pd.date_range(start='20191101', end='20191124', freq='D')
a1 = pd.DataFrame(np.random.randn(24, 4), index=dates, columns=list('ABCD'))
a2 = pd.DataFrame(np.random.rand(24, 4))

# 数据写入文件实例
a1.to_excel('data2_4_1.xlsx')  # 保存到 Excel
a2.to_csv('data2_4_2.csv')     # 保存到 CSV
#不包含行索引时
a1.to_excel('data2_4_1.xlsx', index=False)  # 保存到 Excel,不包含行索引
a2.to_csv('data2_4_2.csv', index=False)     # 保存到 CSV,不包含行索引

读写文件

在这里插入图片描述
例2:写入文件

import pandas as pd
import numpy as np

# 创建数据
dates = pd.date_range(start='20191101', end='20191124', freq='D')
a1 = pd.DataFrame(np.random.randn(24, 4), index=dates, columns=list('ABCD'))
a2 = pd.DataFrame(np.random.rand(24, 4))

# 数据写入文件实例
a1.to_excel('data2_4_1.xlsx')  # 保存到 Excel
a2.to_csv('data2_4_2.csv')     # 保存到 CSV
#不包含行索引时
a1.to_excel('data2_4_1.xlsx', index=False)  # 保存到 Excel,不包含行索引
a2.to_csv('data2_4_2.csv', index=False)     # 保存到 CSV,不包含行索引
# 使用 with 语句创建 ExcelWriter 对象
with pd.ExcelWriter('data2_4_3.xlsx') as writer:
    a1.to_excel(writer, sheet_name="Sheet1")  # 把a1写入Excel文件的Sheet1
    a2.to_excel(writer, sheet_name="Sheet2")  # 把a2写入另一个表单Sheet2
# 文件会自动保存和关闭,无需显式调用 save() 方法

结果:
在这里插入图片描述
在这里插入图片描述
如果写入数据时,不包含行索引:

import pandas as pd
import numpy as np

# 创建数据
dates = pd.date_range(start='20191101', end='20191124', freq='D')
a1 = pd.DataFrame(np.random.randn(24, 4), index=dates, columns=list('ABCD'))
a2 = pd.DataFrame(np.random.rand(24, 4))


#不包含行索引时
a1.to_excel('data2_4_4.xlsx', index=False)  # 保存到 Excel,不包含行索引   header=False  不包含列索引
a2.to_csv('data2_4_5.csv', index=False)     # 保存到 CSV,不包含行索引
# 使用 with 语句创建 ExcelWriter 对象
with pd.ExcelWriter('data2_4_6.xlsx') as writer:
    a1.to_excel(writer, sheet_name="Sheet1", index=False)  # 把a1写入Excel文件的Sheet1
    a2.to_excel(writer, sheet_name="Sheet2",index=False)  # 把a2写入另一个表单Sheet2

在这里插入图片描述
在这里插入图片描述

数据预处理:

在这里插入图片描述
例1:拆分,合并,分组计算

import pandas as pd
import numpy as np
d=pd.DataFrame(np.random.randint(1,6,(10,4)), columns=list("ABCD"))
d1=d[:4]  #获取前4行数据
d2=d[4:]  #获取第5行以后的数据
dd=pd.concat([d1,d2])   #数据行合并
s1=d.groupby('A').mean()      #数据分组求均值
s2=d.groupby('A').apply(sum)  #数据分组求和

print(d,'\n')
print(d1,'\n')
print(d2,'\n')
print(dd,'\n')
print(s1,'\n')
print(s2,'\n')

结果:
在这里插入图片描述
在这里插入图片描述
例2:DataFrame数据操作示例
在这里插入图片描述

import pandas as pd
import numpy as np
a = pd.DataFrame(np.random.randint(1,6,(5,3)),
                 index=['a', 'b', 'c', 'd', 'e'],
                 columns=['one', 'two', 'three'])
a.loc['a', 'one'] = np.nan  #修改第1行第1列的数据
b = a.iloc[1:3, 0:2].values  #提取第2、3行,第1、2列数据
a['four'] = 'bar'  #增加第4列数据
a2 = a.reindex(['a', 'b', 'c', 'd', 'e', 'f'])
a3 = a2.dropna()   #删除有不确定值的行
print(a,'\n')
print(b,'\n')
print(a2,'\n')
print(a3,'\n')

在这里插入图片描述

SciPy库

模块功能表:
在这里插入图片描述

求解非线性方程组

求方程:
在这里插入图片描述
代码实现:

from scipy.optimize import fsolve, root
fx = lambda x:     x**980-5.01*x**979+7.398*x**978\
    -3.388*x**977-x**3+5.01*x**2-7.398*x+3.388
x1 = fsolve(fx, 1.5, maxfev=4000)  #函数调用4000次
x2 = root(fx, 1.5)
print(x1,'\n','-------------');print(x2)

在这里插入图片描述
注意:
在这里插入图片描述
例2:求下列方程组的一组数值解
在这里插入图片描述

from scipy.optimize import fsolve, root
fx = lambda x: [x[0]**2+x[1]**2-1, x[0]-x[1]]
#初始值为[1,1]
s1 = fsolve(fx, [1, 1])
s2 = root(fx, [1, 1])
print(s1,'\n','--------------'); print(s2)

在这里插入图片描述

积分:

例1:
在这里插入图片描述

from scipy.integrate import quad
def fun46(x, a, b):
    return a*x**2+b*x
I1 = quad(fun46, 0, 1, args=(2, 1))
I2 = quad(fun46, 0, 1, args=(2, 10))
print(I1); print(I2)

结果:
在这里插入图片描述
在这里插入图片描述

最小二乘解

在这里插入图片描述
例1:
在这里插入图片描述
在这里插入图片描述
代码:

from scipy.optimize import least_squares
import numpy as np
a=np.loadtxt('Z:\Code\python\建模培训2024\code\data2_47.txt')
x0=a[0]; y0=a[1]; d=a[2]
fx=lambda x: np.sqrt((x0-x[0])**2+(y0-x[1])**2)-d
s=least_squares(fx, np.random.rand(2))
print(s, '\n', '------------', '\n', s.x)

在这里插入图片描述

求矩阵最大模特征值与特征向量

在这里插入图片描述
代码:

from scipy.sparse.linalg import eigs
import numpy as np

a = np.array([[1, 2, 3], [2, 1, 3], [3, 3, 6]], dtype=float)  #必须加float,否则出错
b, c = np.linalg.eig(a)
d, e = eigs(a, 1)
print('最大模特征值为:', d)
print('对应的特征向量为:\n', e)

在这里插入图片描述
在这里插入图片描述

SymPy库

定义符号变量或符号函数命令如下:
在这里插入图片描述

例1:求符号解

在这里插入图片描述

import sympy as sp
a, b, c, x=sp.symbols('a,b,c,x')
x0=sp.solve(a*x**2+b*x+c, x)
print(x0)

在这里插入图片描述

例2:求符号解

在这里插入图片描述
代码实现:

import sympy as sp
# sp.var('x1,x2')
# s=sp.solve([x1**2+x2**2-1,x1-x2],[x1,x2])
# print(s)
x1,x2=sp.symbols('x1,x2')
s=sp.solve([x1**2+x2**2-1,x1-x2],[x1,x2])
print(s)

在这里插入图片描述

例3:求矩阵的特征值与特征向量(符号解)

import numpy as np
import sympy as sp
a = np.identity(4)  #单位矩阵的另一种写法
b = np.rot90(a)
c = sp.Matrix(b)
print('特征值为:', c.eigenvals())
print('特征向量为:\n', c.eigenvects())

在这里插入图片描述

Matplotlib库

plot绘图常见的样式和颜色类型:
在这里插入图片描述
在这里插入图片描述
例1:
在这里插入图片描述代码:

import pandas as pd
import pylab as plt
plt.rc('font',family='SimHei')  #用来正常显示中文标签
plt.rc('font',size=16)  #设置显示字体大小
a=pd.read_excel("Z:\Code\python\建模培训2024\code\data2_52.xlsx", header=None)
b=a.values  #提取其中的数据
x=b[0]; y=b[1:]
#第三个参数。虚实线+形状+颜色
plt.plot(x,y[0],'-*b',label='钻石')
plt.plot(x,y[1],'--dr',label='铂金')
plt.xlabel('月份'); plt.ylabel('每月销量')
plt.legend(loc='upper left'); plt.grid(); plt.show()

在这里插入图片描述
例2:画出销售额的柱状图;

import pandas as pd
import pylab as plt
plt.rc('font',family='SimHei')  #用来正常显示中文标签
plt.rc('font',size=16)  #设置显示字体大小
a=pd.read_excel("Z:\Code\python\建模培训2024\code\data2_52.xlsx",header=None)
b=a.T
b.plot(kind='bar'); 

plt.legend(['钻石', '铂金'])
plt.xticks(range(6), b[0], rotation=0)
plt.ylabel('数量'); plt.show()

在这里插入图片描述

子图:

在这里插入图片描述
代码:

import pylab as plt
import numpy as np
plt.rc('font',family='SimHei')  #用来正常显示中文标签
plt.rc('axes',unicode_minus=False)
#生成随机数,进行归一化处理
y1=np.random.randint(2, 5, 6)
#使其和为1
y1=y1/sum(y1)
#创建第一个子图,水平条形图
# 在一个 2x2 的子图网格中创建第一个子图,位于第一个位置。
plt.subplot(2, 2, 1)
str=['苹果', '葡萄', '桃子', '梨', '香蕉', '菠萝']
plt.barh(str,y1)  #水平条形图
#创建第二个子图,饼图
plt.subplot(222)
plt.pie(y1, labels=str)  #饼图
#创建第三个子图,折线图
plt.subplot(212)
#生成一个包含 100 个点的数组,这些点均匀分布在 0.01 到 10 之间。
x2=np.linspace(0.01, 10, 100)
y2=np.sin(10*x2)/x2
plt.plot(x2,y2); plt.xlabel('$x$')
plt.ylabel('$\\mathrm{sin}(10x)/x$'); plt.show()

结果:
在这里插入图片描述

三维绘图

例1:三维曲线

在这里插入图片描述
代码:

import pylab as plt
import numpy as np
ax=plt.axes(projection='3d')  #设置三维图形模式
z=np.linspace(-50, 50, 1000)
x=z**2*np.sin(z); y=z**2*np.cos(z)
ax.plot(x, y, z, 'c')
plt.show()

在这里插入图片描述
例2:画出三维表面图:

import pylab as plt
import numpy as np
x=np.linspace(-4,4,100)
x,y=np.meshgrid(x,x)
z=50*np.sin(x+y)
ax=plt.axes(projection='3d')
ax.plot_surface(x, y, z, color='b')
plt.show()

在这里插入图片描述
例3:
在这里插入图片描述
代码:

import pylab as plt
import numpy as np
ax=plt.axes(projection='3d')
X = np.arange(-6, 6, 0.25)
Y = np.arange(-6, 6, 0.25)
X, Y = np.meshgrid(X, Y)
Z = np.sin(np.sqrt(X**2 + Y**2))
surf = ax.plot_surface(X, Y, Z, cmap='coolwarm')
#在图形旁边添加一个颜色条,用于表示不同颜色对应的 Z 值(即表面的高度)。
plt.colorbar(surf); plt.show()

在这里插入图片描述

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

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

相关文章

【三维重建】三角网格中轴骨架线提取

三维网格中轴线提取 方法介绍实现提取 三维网格中轴线提取是计算机图形学和三维建模领域中的一个重要技术,它对于理解三维形状的拓扑结构和几何特性具有重要意义。 方法介绍 以下是几种常见的三维网格中轴线提取方法: 基于距离变换的方法 基本原理&…

海康二次开发笔记10-独立Group导入、导出及执行

独立Group导入、导出及执行 1. 界面设计 2. 添加引用 Group相当于VM中的模块,因此在调用相关接口函数前,需要引用对应的动态库IMVSGroupCs,同时将复制本地的属性改为False using IMVSGroupCs;3. 添加VmSingleModuleSetConfigControl控件 拖入控件后,设置Dock为Fill 4. 选择G…

算法的学习笔记—把数字翻译成字符串

😀前言 在日常生活中,我们经常会遇到各种编码和解码的问题。今天,我们将讨论一个有趣的问题:如何将一串数字翻译成字母,并计算出有多少种不同的翻译方法。 🏠个人主页:尘觉主页 文章目录 &#…

虚拟化设置和虚拟机相关的环境搭建

目录 0.首先声明 1.背景知识 ​编辑 2.虚拟化设置 3.安装vm15.5过程 4.安装虚拟系统 4.1下载centos7.6 4.2安装centos7.6 5.我的总结 6.我的体会 0.首先声明 我的这个教程参考的就是韩顺平老师的这个linux学习教程,但是这个韩老师的这个教程就是2020年的教…

算法如何应用,思路都在这

目录 01 问题定义 02 问题建模 03 特征工程 04 模型选择 05 模型融合 本文深入探讨了算法在不同领域的应用方法和背后的思考逻辑。作者夏师傅通过丰富的案例分析,揭示了算法如何助力产品决策、优化业务流程,并提供了实用的策略和技巧。无论您是技术专家还…

2024 年 Web 开发者必备的 30 款 CSS 工具

2024 年 Web 开发者必备的 30 款 CSS 工具 | 瑆箫博客 找到合适的 CSS 工具可能需要花费不少时间,但是这份 2024 年最棒的 30 款 CSS 工具清单,可以让你的选择变得轻松许多。无论你的 CSS 技能水平如何,这份清单都能提供调试、优化代码和提升…

Bazel 快速入门与核心知识

Bazel 快速入门与核心知识 Bazel 简介 Bazel 是一款与 Make、Maven 和 Gradle 类似的开源构建和测试工具。 它使用人类可读的高级构建语言。Bazel 支持多种语言的项目 (C/C, Java, Python, …),可为多个平台构建输出。Bazel 支持跨多个代码库和大量用户的大型代码…

2024怎么选蓝牙耳机性价比品牌?四款小白必看优选王炸机型推荐!

如今国人对蓝牙耳机的选择日益重视,蓝牙耳机作为智能的手机备件,普及率也是一升再升,但市面上很多品牌虽然宣传自己音质好和佩戴感舒适,其实性能不佳,那么2024怎么选蓝牙耳机性价比品牌?身为资深的蓝牙耳机…

复变函数在大模型中的应用

1. 导入 说来惭愧,我研究生时的研究方向是复分析,但毕业近十年来几乎没用到它。 我还记得实习时做自我介绍时,我说我的研究方向是复分析。面试官不太了解,我便解释说,这是关于对 -1 开平方得到的虚数 i 的研究。 在…

信号的捕捉

1.信号的产生 信号递达:实际执行信号的处理动作称为信号的递达 信号未决:信号从产生到递达之间的状态 进程可以阻塞某个信号 被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作 注意,忽略和阻塞是不同的,只要信号阻塞就不会被递达,而忽略是递达…

【Apache Doris】数据均衡问题排查指南

原文阅读:【巨人肩膀社区博客分享】【Apache Doris】数据均衡问题排查指南 一、前提概要 当集群处于以下几种情况时,可参考本文进行问题排查。 •BE节点之间的数据不均 •单个BE节点上的多个磁盘之间的数据不均 •BE节点的上线和下线进度卡死&#…

《高等代数》两条线行列式

说明:此文章用于本人复习巩固,如果也能帮助到大家那就更加有意义了。 注:两条线行列式的固定做法为按照第一列展开。

Kafka分布式集群部署实战:跨越理论,直击生产环境部署难题与解决方案,性能调优、监控与管理策略大揭秘,轻松上手分布式消息中间件

本文介绍kafka的集群如何部署和安装,1-4章理论知识,第5章详解集群的部署,部署Kafka之前需要先部署好分布式的Zookeeper,不喜欢理论的可以直接看第5章,欢迎大家一起探讨技术! Zookeeper集群部署参考文章&…

VUE-组件间通信(三)全局事件总线

一、作用&#xff1a;任意组件间通信 二、实现 1、创建全局事件总线 new Vue({render: h > h(App),beforeCreate(){//创建全局事件总线Vue.prototype.$busthis} }).$mount(#app) 2、学生组件 触发事件 <template><div class"studentInfo"><h…

(备份)常用ASCII 8*8 点阵 以及查询显示字符的点阵

图片 #include "driver/spi_master.h" #include "driver/gpio.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "string.h" #include "driver/i2c.h" #include "esp_rom_sys.h"…

【postman如何生成python代码】

postman如何生成python代码 https://jingyan.baidu.com/article/86fae3461577c27d48121ad1.html

【大模型系列篇】词向量 - 从Word2Vec到ELMo

&#x1f525;&#x1f525;&#x1f525;首先安利一个比较不错的忍不住就想一键三连的大模型科普: 大模型科普专栏 - AI老兵文哲&#xff08;哔哩哔哩&#xff09; 词向量&#xff08;又叫词嵌入&#xff09;已经成为NLP领域各种任务的必备一步&#xff0c;而且随着BERT、GPT等…

JS打造一款你自己的专用字体:使用p5.js与JavaScript实现

前言 在最近的生成艺术项目中遇到一个小问题&#xff1a;如何在作品中优雅地添加文本元素&#xff0c;同时避免使用网络字体&#xff0c;要么侵权要么花钱~~给项目增加不必要的负担&#xff0c;我决定不走寻常路&#xff0c;自己动手&#xff0c;丰衣足食&#xff0c;用JS打造…

C++11 新特性基础

前言 C11是继&#xff0c;C98/03之后的最大的一次更新&#xff0c;这次更新虽然花了很长的时间&#xff0c;但是真的推出了很多的干货&#xff01;本期内容开始我们将介绍C11常用的操作&#xff01; 目录 前言 一、C11介绍 二、统一的列表初始化 1、{}初始化 2、std::in…

【机器学习】循环神经网络(RNN)介绍

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 循环神经网络(RNN)介绍什么是RNN?RNN的基本原理递归神经网络单元前向传播反向传…