0.函数求值
import sympy
x=sympy.symbols('x')
y=x**2+x*3+5
print(y.subs({x:1}))
import sympy
x,y=sympy.symbols('x y')
z=x**2+y**x
print(z.subs({x:1,y:2}))
1.求极限
import sympy
#定义x的自变量
x=sympy.Symbol('x') # 此时的x是一个对象
#关于x的函数
y=sympy.sin(x)/x
#求极限,第一个参数为函数,第二个参数为自变量,第三个参数为自变量所要趋近的值
print(sympy.limit(y,x,0))
2.求一阶导数
import sympy
#定义x的自变量
x=sympy.Symbol('x')
#关于x的函数
y=sympy.sin(x**2)
#关于y求x的一阶导数
print(sympy.diff(y,x,1))
求偏导数
import sympy
#定义x,y的多自变量
x,y=sympy.symbols('x y')
#关于x的函数
z=x**2+y**2
#z关于x的一阶导数
dx=sympy.diff(z,x,1)
#z关于y的一阶导数
dy=sympy.diff(z,y,1)
print(dx,dy)
3.求定积分
import sympy
x=sympy.Symbol('x')
y=x*x*x
# 求y在0到1的定积分
print(sympy.integrate(y,(x,0,1)))
4.求不定积分
import sympy
x=sympy.Symbol('x')
y=x*x*x
# 求y的不定积分
print(sympy.integrate(y,x))
5.行列式求值
from sympy import Matrix
# 定义矩阵
d=Matrix([[1,0,7],
[1,2,4],
[1,1,2]])
# 计算行列式
print(d.det())
6.使用sympy完成梯度下降
from sympy import symbols, diff
# 定义符号变量
x = symbols('x')
# 定义函数
f = x**2 - 4*x + 4
# 初始值,学习率和迭代次数
x_val = 10
alpha = 0.1
iterations = 50
# 梯度下降算法
for i in range(iterations):
df_dx = diff(f, x).subs(x, x_val) # 计算梯度
x_val = x_val - alpha * df_dx # 更新x的值
print(f"第 {i+1} 次迭代:x = {x_val}")
print(f"函数的最小值出现在 x = {x_val}")
7.矩阵SVD分解
import numpy as np
from scipy.linalg import svd
A = np.array([[1, 0, 0, 0,2],
[0, 0, 3, 0, 0],
[0, 0, 0, 0, 0],
[0, 4, 0, 0, 0]
])
U, s, VT = svd(A)
print(s)
8.利用词袋模型计算语句相似度
词袋模型:没有顺序,只看你有多少个(像口袋一样)
str_1 = 'I like book, I like book!'
str_2 = 'I like book, too!'
str_3 = 'I like food'
book, I, food , like, too
2 2 0 2 0
1 1 0 1 1
0 1 1 1 0
import numpy as np
# 词袋模型
vec1 = np.array([2, 2, 0, 2, 0])
vec2 = np.array([1,1,0,1,1])
vec3 = np.array([0,1,1,1,0])
# 计算相似度
# 两个向量的点成/两个向量的模乘
(vec1 @ vec2)/(np.linalg.norm(vec1)*np.linalg.norm(vec2))
(vec1 @ vec3)/(np.linalg.norm(vec1)*np.linalg.norm(vec3))
(vec2 @ vec3)/(np.linalg.norm(vec2)*np.linalg.norm(vec3))
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similarity
# 定义文本
str_1 = 'I like book, I like book!'
str_2 = 'I like book, too!'
str_3 = 'I like food'
# 创建词袋模型
vectorizer = CountVectorizer()
corpus = [str_1, str_2, str_3]
X = vectorizer.fit_transform(corpus)
# 计算相似度
cosine_similarities = cosine_similarity(X)
cosine_similarities
"""
array([[1. , 0.81649658, 0.5 ],
[0.81649658, 1. , 0.40824829],
[0.5 , 0.40824829, 1. ]])
"""
9.利用sympy解方程
# 解一元方程
import sympy
x = sympy.symbols('x')
gfg_exp = x + sympy.exp(x) + sympy.sin(x) - 10
print("Before Integration : {}".format(gfg_exp))
intr = sympy.nsolve(gfg_exp, x, 1)
print("After Integration : {}".format(intr))
# 解二元方程
import sympy
x=sympy.Symbol('x')
y=sympy.Symbol('y')
f1=x+y-3
f2=x-y+5
intr=sympy.solve([f1,f2],[x,y])
print(intr)
# {x: -1, y: 4}
10.numpy的矩阵运算
#python计算矩阵的秩、行列式、迹,特征值和特征向量、
import numpy as np
a = np.array([[1,1,1],
[1,1,10],
[1,1,15]])
np.linalg.matrix_rank(a)#返回矩阵的秩
np.linalg.det(a) #返回矩阵的行列式
a.diagonal() #返回矩阵的对角线元素,也可以通过offset参数在主角线的上下偏移,获取偏移后的对角线元素。a.diagonal(offset=1)返回array([1.10])
a.trace()#返回迹
eigenvalues ,eigenvectors= np.linalg.eig(a) #eigenvalues 为特征值。eigenvectors为特征向量
eigenvalues
"""
该代码原文链接:https://blog.csdn.net/weixin_43336305/article/details/103658406
"""
11.对图片的操作
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
image = Image.open(r"1.jpg")
# 旋转图片
rotated_image = image.rotate(45) # 旋转45度
# 翻转图片
flipped_image = image.transpose(Image.FLIP_LEFT_RIGHT) # 水平翻转
# 转换为黑白图像
gray_image = image.convert('1') # '1'表示黑白模式
# 显示图像
plt.figure(figsize=(10, 10))
plt.imshow(gray_image)
plt.title("Origional Image")
plt.axis("off")
plt.show()
from PIL import Image
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = Image.open(r"1.jpg")
img = np.array(img)
# 定义浮雕效果的核
kernel = np.array([[-2, -1, 0], [-1, 1, 1], [0, 1, 2]])
# 应用核到图像上
img_embossed = cv2.filter2D(img, -1, kernel)
# 使用Canny方法进行边缘检测
edges = cv2.Canny(img, 50, 150)
plt.figure(figsize=(10, 10))
plt.imshow(edges)
plt.title("Origional Image")
plt.axis("off")
plt.show()
12.pca降维
"""
4维数据降成2维数据
"""
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target
# PCA降维
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
# X_pca是一个二维矩阵
# 绘制降维后的数据
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y)
plt.xlabel('PC1')
plt.ylabel('PC2')
plt.show()