找回密码
 会员注册
查看: 21|回复: 0

Python编程练习的解密与实战(四)

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
71356
发表于 2024-9-9 17:46:33 | 显示全部楼层 |阅读模式
⏰诗赋清音:云生高巅梦远游,星光点缀碧海愁。山川深邃情难晤,剑气凌云志自修。目录🪐1.初识Python🪐2.研究报告四🌍研究目的🌍研究要求🌍研究代码🌍研究结果🌍研究体会📝总结🪐1.初识PythonPython是一种高级、通用、解释型的编程语言,具有简洁而清晰的语法,被广泛应用于软件开发、数据科学、人工智能等领域。以下是Python技术的一些主要特点和应用领域:易学易用:Python的语法设计简单,容易学习和理解。这使得它成为初学者和专业开发人员的首选语言之一。开源:Python是开源的,任何人都可以查看、修改和分发其源代码。这为开发者提供了自由和灵活性。跨平台:Python可在多个操作系统上运行,包括Windows、Linux和macOS,使其成为跨平台开发的理想选择。强大的社区支持:Python拥有庞大的全球开发者社区,用户可以获得丰富的文档、库和工具,方便解决各类问题。广泛应用领域:Python在多个领域都有应用,包括Web开发、数据科学、机器学习、人工智能、自动化测试、网络编程等。丰富的第三方库:Python拥有丰富的第三方库和框架,如NumPy、Pandas、Django、Flask等,提供了强大的工具来简化开发流程。动态类型:Python是一种动态类型语言,允许开发者更加灵活地进行变量和对象的操作。面向对象编程:Python支持面向对象编程,使得代码结构更加模块化、可维护性更强。总体而言,Python是一门功能强大、灵活易用的编程语言,适用于各种规模和类型的项目,从小型脚本到大型应用,都能够得心应手。🪐2.研究报告四🌍研究目的掌握JupyterNotebook编程工具的基本用法:学习并掌握JupyterNotebook的基本用法,包括代码编写、执行和Markdown文档的编辑等。理解并熟悉Python的Seaborn和Matplotlib画图:了解Seaborn和Matplotlib这两个Python库在数据可视化方面的作用。熟悉它们的画图函数和参数,能够使用它们创建各种图表。使用图像的RGB色彩模式并实现图像的数组表示与图像变换:理解图像的RGB色彩模式,了解每个像素由红、绿、蓝三个通道组成。学习如何将图像表示为数组,掌握图像数组的基本概念。实现图像的变换,例如通过调整色彩、大小或应用滤镜等方式对图像进行修改。🌍研究要求操作书上第九章内容:阅读并实践书籍中的第九章内容,深入了解相关知识和技能。请画出如图2.png所示的图形:进行图形绘制工作,按照图2.png的示例绘制相应的图形。通过编码获得fcity.jpg的手绘图像(如beijing.jpg所示):利用编码技术,对fcity.jpg进行处理,生成类似beijing.jpg的手绘效果图像。这可能涉及图像处理算法和相关库的使用。🌍研究代码1. 操作书上第九章内容##1.操作书上第九章内容importmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspd##直线图data=np.arange(10)plt.plot(data)##创建画布fig=plt.figure()axs=plt.subplots(2,3)axs##折线图plt.figure()plt.plot([1,2,3,4,5,6,7],[10,15,13,16,18,20,10])plt.show()##散点图#0.准备数据x=[225.98,247.07,253.14,457.85,241.58,301.01,20.67,288.64,163.56,120.06,207.83,342.75,147.9,53.06,224.72,29.51,21.61,483.21,245.25,399.25,343.35]y=[196.63,203.88,210.75,372.74,202.41,247.61,24.9,239.34,140.32,104.15,176.84,288.23,128.79,49.64,191.74,33.1,30.74,400.02,205.35,330.64,283.45]#1.创建画布plt.figure(figsize=(20,8),dpi=100)#2.绘制图像plt.scatter(x,y)#3.图像显示plt.show()##柱状图movie_name=['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕','七十七天','密战','狂兽','其它']#横坐标x=range(len(movie_name))#票房数据y=[73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222]#1.创建画布plt.figure(figsize=(20,8),dpi=100)#2.绘制图像plt.bar(x,y,color=['b','r','g','y','c','m','y','k','c','g','b'],width=0.7)#2.1修改x轴显示plt.xticks(x,movie_name)#2.2添加网格plt.grid(linestyle="--",alpha=0.8)#2.3添加plt.title("电影票房收入对比")#3.图像显示plt.show()##绘制基本图像importrandomfrompylabimportmpl#设置显示中文字体mpl.rcParams["font.sans-serif"]=["SimHei"]#设置正常显示符号mpl.rcParams["axes.unicode_minus"]=Falsex=range(60)y_shanghai=[random.uniform(15,8)foriinx]#建画布plt.figure(figsize=(20,8),dpi=80)#绘折线图plt.plot(x,y_shanghai)#显示图像plt.show()##修改x,y间隔x=range(60)y_shanghai=[random.uniform(15,8)foriinx]#建画布plt.figure(figsize=(20,8),dpi=80)#绘折线图plt.plot(x,y_shanghai)#修改x,y轴刻度x_ticks_label=["11点{}分".format(i)foriinx]y_ticks=range(40)#修改x,y间隔plt.xticks(x[::5])plt.yticks(y_ticks[::5])#显示图像plt.show()##解决中文问题x=range(60)y_shanghai=[random.uniform(15,8)foriinx]#建画布plt.figure(figsize=(20,8),dpi=80)#绘折线图plt.plot(x,y_shanghai)#修改x,y轴刻度x_ticks_label=["11点{}分".format(i)foriinx]y_ticks=range(40)#修改x,y间隔plt.xticks(x[::5],x_ticks_label[::5])plt.yticks(y_ticks[::5])#显示图像plt.show()##添加网格信息x=range(60)y_shanghai=[random.uniform(15,8)foriinx]#建画布plt.figure(figsize=(20,8),dpi=80)#绘折线图plt.plot(x,y_shanghai)#修改x,y轴刻度x_ticks_label=["11点{}分".format(i)foriinx]y_ticks=range(40)#修改x,y间隔plt.xticks(x[::5],x_ticks_label[::5])plt.yticks(y_ticks[::5])#添加网格信息plt.grid(True,linestyle="--",alpha=1)#显示图像plt.show()##添加x、y轴还有描述信息x=range(60)y_shanghai=[random.uniform(15,8)foriinx]#建画布plt.figure(figsize=(20,8),dpi=80)#绘折线图plt.plot(x,y_shanghai)#修改x,y轴刻度x_ticks_label=["11点{}分".format(i)foriinx]y_ticks=range(40)#修改x,y间隔plt.xticks(x[::5],x_ticks_label[::5])plt.yticks(y_ticks[::5])#添加网格信息plt.grid(True,linestyle="--",alpha=1)#2.3添加描述信息plt.xlabel("时间")plt.ylabel("温度")plt.title("中午11点-12点某城市温度变化图",fontsize=20)#显示图像plt.show()##图像保存x=range(60)y_shanghai=[random.uniform(15,8)foriinx]#建画布plt.figure(figsize=(20,8),dpi=80)#绘折线图plt.plot(x,y_shanghai)#修改x,y轴刻度x_ticks_label=["11点{}分".format(i)foriinx]y_ticks=range(40)#修改x,y间隔plt.xticks(x[::5],x_ticks_label[::5])plt.yticks(y_ticks[::5])#添加网格信息plt.grid(True,linestyle="--",alpha=1)#2.3添加描述信息plt.xlabel("时间")plt.ylabel("温度")plt.title("中午11点-12点某城市温度变化图",fontsize=20)#2.4图像保存plt.savefig("./test.png")#显示图像plt.show()##在一个坐标系中绘制多个图像x=range(60)y_shanghai=[random.uniform(15,8)foriinx]y_beijing=[random.uniform(1,3)foriinx]#建画布plt.figure(figsize=(20,8),dpi=80)#绘折线图plt.plot(x,y_shanghai,label="上海")plt.plot(x,y_beijing,color="r",linestyle="--",label="北京")#修改x,y轴刻度x_ticks_label=["11点{}分".format(i)foriinx]y_ticks=range(40)#修改x,y间隔plt.xticks(x[::5],x_ticks_label[::5])plt.yticks(y_ticks[::5])#添加网格信息plt.grid(True,linestyle="--",alpha=1)#2.3添加描述信息plt.xlabel("时间")plt.ylabel("温度")plt.title("中午11点-12点某城市温度变化图",fontsize=20)#2.4图像保存plt.savefig("./test.png")#2.5显示图例plt.legend(loc=0)#显示图像plt.show()##只建画布+绘制图像x=range(60)y_shanghai=[random.uniform(15,8)foriinx]y_beijing=[random.uniform(1,3)foriinx]#1.创建画布#plt.figure(figsize=(20,8),dpi=100)fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)#2.绘制图像#plt.plot(x,y_shanghai,label="上海")#plt.plot(x,y_beijing,color="r",linestyle="--",label="北京")axes[0].plot(x,y_shanghai,label="上海")axes[1].plot(x,y_beijing,color="r",linestyle="--",label="北京")#修改x,y轴刻度x_ticks_label=["11点{}分".format(i)foriinx]y_ticks=range(40)#修改x,y间隔plt.xticks(x[::5],x_ticks_label[::5])plt.yticks(y_ticks[::5])#添加网格信息plt.grid(True,linestyle="--",alpha=1)#2.3添加描述信息plt.xlabel("时间")plt.ylabel("温度")plt.title("中午11点-12点某城市温度变化图",fontsize=20)#2.4图像保存plt.savefig("./test.png")#2.5显示图例plt.legend(loc=0)#显示图像plt.show()##完善#0.准备数据x=range(60)y_shanghai=[random.uniform(15,18)foriinx]y_beijing=[random.uniform(1,3)foriinx]#1.创建画布#plt.figure(figsize=(20,8),dpi=100)fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)#2.绘制图像#plt.plot(x,y_shanghai,label="上海")#plt.plot(x,y_beijing,color="r",linestyle="--",label="北京")axes[0].plot(x,y_shanghai,label="上海")axes[1].plot(x,y_beijing,color="r",linestyle="--",label="北京")#2.1添加x,y轴刻度#设置x,y轴刻度x_ticks_label=["11点{}分".format(i)foriinx]y_ticks=range(40)#修改x,y轴坐标刻度显示#plt.xticks(x_ticks_label[::5])#坐标刻度不可以直接通过字符串进行修改#plt.xticks(x[::5],x_ticks_label[::5])#plt.yticks(y_ticks[::5])axes[1].set_xticks(x[::5])axes[1].set_yticks(y_ticks[::5])axes[1].set_xticklabels(x_ticks_label[::5])#2.2添加网格显示#plt.grid(True,linestyle="--",alpha=1)axes[0].grid(True,linestyle="--",alpha=1)axes[1].grid(True,linestyle="--",alpha=1)#2.3添加描述信息#plt.xlabel("时间")#plt.ylabel("温度")#plt.title("中午11点-12点某城市温度变化图",fontsize=20)axes[0].set_xlabel("时间")axes[0].set_ylabel("温度")axes[0].set_title("中午11点-12点某城市温度变化图",fontsize=20)axes[1].set_xlabel("时间")axes[1].set_ylabel("温度")axes[1].set_title("中午11点-12点某城市温度变化图",fontsize=20)#2.4图像保存plt.savefig("./test.png")#2.5显示图例#plt.legend(loc=0)axes[0].legend(loc=0)axes[1].legend(loc=0)#3.图像显示plt.show()##波形图应用举例importnumpyasnp#0.准备数据x=np.linspace(-10,10,1000)y=np.sin(x)#1.创建画布plt.figure(figsize=(20,8),dpi=100)#2.绘制函数图像plt.plot(x,y)#2.1添加网格显示plt.grid()#3.显示图像plt.show()##利用seaborn画图importseabornassnsimportnumpyasnpimportpandasaspdnp.random.seed(0)#确定随机数生成数据一样arr=np.random.randn(100)sns.distplot(arr,bins=10,hist=True,kde=True,rug=True)#绘制双变量分布##绘制散点图df=pd.DataFrame({"x":np.random.randn(500),"y":np.random.randn(500),"z":np.random.randn(500),"k":np.random.randn(500)})sns.jointplot("x","y",data=df,kind='scatter',color="red",size=5,ratio=5,space=1,dropna=True)sns.jointplot("x","y",data=df,kind='kde',color="red",size=5,ratio=5,space=1,dropna=True)sns.jointplot("x","y",data=df,kind='hex',color="blue",size=5,ratio=5,space=1,dropna=True)##绘制成对双变量分布sns.pairplot(df)##绘制类别散点图ddf=pd.DataFrame({"x":np.random.randn(5),"y":np.random.randn(5),"z":np.random.randn(5),"k":np.random.randn(5),"week":["one","two","three","four","five"]})ddfsns.swarmplot(x="week",y="x",data=ddf,hue="y")2. 请画出如图2.png所示的图形##请画出如图2.png所示的图形importturtleastt.Turtle().screen.delay(0)#加速s=0t.pent.seth(0)length=0while(length!=400):#当边长达到400时循环结束t.penup()#提起画笔t.goto(s,s)#新的起点坐标t.pendown()#放下画笔foriinrange(4):t.fd(length)#边长t.left(90)#画笔方向向左旋转90度length+=10#边长加10s-=5#改变画笔起点t.hideturtle()#绘图结束后把笔头隐藏起来t.done()#绘图结束后使窗口停留##画圆柱importturtleastimportnumpyasnpt.Turtle().screen.delay(0)#加速s=0t.pent.seth(0)length=0while(length!=400):#当边长达到400时循环结束t.penup()#提起画笔t.goto(s,s)#新的起点坐标t.pendown()#放下画笔foriinrange(90):t.fd(length)#边长t.left(4)#画笔方向向左旋转90度length=2*np.pi#边长加10s-=5#改变画笔起点t.hideturtle(True)#绘图结束后把笔头隐藏起来t.done()#绘图结束后使窗口停留##画圆importturtleastimportnumpyasnp#t.Turtle().screen.delay(0)#加速s=0t.pent.seth(0)length=0r=1t.penup()#提起画笔t.goto(s,s)#新的起点坐标t.pendown()#放下画笔foriinrange(360):t.fd(length)#边长t.left(4)#画笔方向向左旋转90度length=2*np.pi*r#边长加10t.hideturtle(True)#绘图结束后把笔头隐藏起来t.done()#绘图结束后使窗口停留3. 通过编码获得fcity.jpg的手绘图像(如beijing.jpg所示)##通过编码获得fcity.jpg的手绘图像(如beijing.jpg所示)fromPILimportImageimportnumpyasnpa=np.asarray(Image.open('C:/Users/86151/mycode/fcity.jpg').convert('L')).astype('float')depth=10.#(0-100)grad=np.gradient(a)#取图像灰度的梯度值grad_x,grad_y=grad#分别取横纵图像梯度值grad_x=grad_x*depth/100.grad_y=grad_y*depth/100.#深度调整x、y的梯度值A=np.sqrt(grad_x**2+grad_y**2+1.)#梯度归一化uni_x=grad_x/Auni_y=grad_y/Auni_z=1./Avec_el=np.pi/2.2#光源的俯视角度,弧度值vec_az=np.pi/4.#光源的方位角度,弧度值dx=np.cos(vec_el)*np.cos(vec_az)#光源对x轴的影响dy=np.cos(vec_el)*np.sin(vec_az)#光源对y轴的影响dz=np.sin(vec_el)#光源对z轴的影响b=255*(dx*uni_x+dy*uni_y+dz*uni_z)#光源归一化,梯度转化为灰度b=b.clip(0,255)#避免数据越界im=Image.fromarray(b.astype('uint8'))#重构图像im##修改光源1fromPILimportImageimportnumpyasnpa=np.asarray(Image.open('C:/Users/86151/mycode/fcity.jpg').convert('L')).astype('float')depth=10.#(0-100)grad=np.gradient(a)#取图像灰度的梯度值grad_x,grad_y=grad#分别取横纵图像梯度值grad_x=grad_x*depth/100.grad_y=grad_y*depth/100.#深度调整x、y的梯度值A=np.sqrt(grad_x**2+grad_y**2)#梯度归一化uni_x=grad_x/Auni_y=grad_y/Auni_z=1./Avec_el=np.pi/2.2#光源的俯视角度,弧度值vec_az=np.pi/4.#光源的方位角度,弧度值dx=np.cos(vec_el)*np.cos(vec_az)#光源对x轴的影响dy=np.cos(vec_el)*np.sin(vec_az)#光源对y轴的影响dz=np.sin(vec_el)#光源对z轴的影响b=255*(dx*uni_x+dy*uni_y+dz*uni_z)#光源归一化,梯度转化为灰度b=b.clip(0,255)#避免数据越界im=Image.fromarray(b.astype('uint8'))#重构图像im##图像的数组表示fromPILimportImage#图像处理的库importnumpyasnpim=np.array(Image.open('C:/Users/86151/mycode/fcity.jpg'))print(im.shape,im.dtype)##修改光源2fromPILimportImage#图像处理的库importnumpyasnpa1=np.array(Image.open('C:/Users/86151/mycode/fcity.jpg'))print(a1.shape,a1.dtype)b1=[255,255,255]-a1im1=Image.fromarray(b1.astype('uint8'))#重构图像im1##修改光源3fromPILimportImage#图像处理的库importnumpyasnpa=np.array(Image.open('C:/Users/86151/mycode/fcity.jpg').convert('L'))b=255-aim2=Image.fromarray(b.astype('uint8'))#重构图像im2##修改光源4fromPILimportImage#图像处理的库importnumpyasnpa=np.array(Image.open('C:/Users/86151/mycode/fcity.jpg').convert('L'))b=(100/255)*a+150#区间变换im3=Image.fromarray(b.astype('uint8'))#重构图像im3##修改光源5fromPILimportImage#图像处理的库importnumpyasnpa=np.array(Image.open('C:/Users/86151/mycode/fcity.jpg').convert('L'))b=(255)*(a/255)**2#像素平方im3=Image.fromarray(b.astype('uint8'))#重构图像im3##修改光源6fromPILimportImage#图像处理的库importnumpyasnpa=np.array(Image.open('C:/Users/86151/mycode/fcity.jpg').convert('L'))b=(255)*(a/255)**2#像素平方b=b.clip(0,255)im3=Image.fromarray(b.astype('uint8'))#重构图像im3🌍研究结果1.问题一2.问题3.问题三🌍研究​​​​​​​体会图像RGB色彩模式与数组表示与图像变换:通过实验,初次了解如何利用Python使用图像的RGB色彩模式,并实现图像的数组表示与变换。在此过程中,熟悉了Python的Seaborn和Matplotlib库,使画图过程更加高效。Matplotlib画图中的问题和解决方法:实验1记录了一些问题,例如在使用Matplotlib画图时,为了实现中文显示,需要添加语句mpl.rcParams["font.sans-serif"]=["SimHei"],并且搭配设置正常显示符号mpl.rcParams["axes.unicode_minus"]=False,以达到更好的效果。绘制圆柱和圆的代码添加以及加速效果的思考:在实验2中,自行添加了画圆柱和画圆的代码。发现使用t.Turtle().screen.delay(0)虽然可以加速,但经常导致内核终止现象,因此对于加速效果的使用需要权衡利弊。📝总结Python领域就像一片未被勘探的信息大海,引领你勇敢踏入Python数据科学的神秘领域。这是一场独特的学习冒险,从基本概念到算法实现,逐步揭示更深层次的模式分析、匹配算法和智能模式识别的奥秘。渴望挑战Python信息领域的技术?不妨点击下方链接,一同探讨更多Python数据科学的奇迹吧。我们推出了引领趋势的💻Python数据科学专栏:《Python|编程解码》,旨在深度探索Python模式匹配技术的实际应用和创新。🌐🔍
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-9 19:59 , Processed in 0.900862 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表