完整版下载超详细Python算法案例讲解100例.zip-Python文档类资源-CSDN下载

1.问题描述
绘制一条0~360°(2π)的余弦函数cos(x)曲线。
2.问题分析
要绘制余弦函数曲线,需要使用到Python语言的NumPy库和matplotlib库,绘制的
余弦函数曲线在0~360°(2π)的范围内。
3.算法设计
该程序的核心部分如下:
1)生成一个0~360°的数组。
X = np.linspace(0, 2 * np.pi, 100) #生成指定大小的一维数组
2)生成余弦值。
Y = np.cos(X) # 返回数组元组的余弦值
3)传入数据绘制余弦函数曲线。
# 传入数据
plt.plot(X, Y, linewidth = 4) # 设置线宽
plt.plot(X, Y, 'g') # 设置线条为绿色
4)显示绘制的图形。
# 绘制曲线
plt.show()
4.完整的程序
根据上面的分析,编写程序如下:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @author : liuhefei
# @desc: 绘制余弦曲线
import numpy as np
import matplotlib.pyplot as plt
if __name__ == "__main__":
用于正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用于正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
# 范围0~2π,共100等分
X = np.linspace(0, 2 * np.pi, 100) #生成指定大小的一维数组
Y = np.cos(X) # 返回数组元组的余弦值
# 传入数据
plt.plot(X, Y, linewidth = 4) # 设置线宽
plt.plot(X, Y, 'g') # 设置线条为绿色
plt.title("余弦曲线图")
# 保存图片
plt.savefig("reuslt1.png")
# 绘制曲线
plt.show()

 5.运行结果
在PyCharm下运行程序,结果如图11.6所示。

 6.补充知识点
(1)NumPy库
NumPy库是Python科学计算库的基础,它定义了多(N)维数组对象,并且实现了
大量的科学运行,例如向量运算、线性代数运算、傅里叶变换、随机数生成等。另
外,它能与C/C++和FORTRAN代码集成,并实现一些复杂功能。
NumPy库常用于科学计算,除此之外,还可以用作多维度普通数据的容器,也可
以定义任意类型的数据,使得它可以与各种类型的数据分析库进行无缝连接。
NumPy库的主要对象是一个均匀的多维数组,它通过众多的方法来灵活地操作数
组。多维数组类似于表格,表格内的数据都是同一类型的,一般是数字。N维数组在
NumPy中是一个ndarray类,该类具有以下几个重要属性:
·ndarray.ndim:数组的维度。
·ndarray.shape:数组的形状,返回一个元组,表示数组在各个方向上的长度。例
如一个n行m列的矩阵,shape值是(n,m)。
·ndarray.size:数组的大小,该值等于shape元组内各个元素的乘积。
·ndarray.dtype:数组内元素的数据类型。这里的数据类型可以是Python的标准数据
类型,也可以是NumPy提供的常用数据类型。
·ndarray.itemsize:数组内的元素占用计算机内存的大小。
·ndarray.data:数组在内存中的地址。
实例代码如下:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @author : liuhefei
# @desc: numpy库
import numpy as np
if __name__ == "__main__":
# 生成一维数组
a = np.array([1,2,3,4,5,6,7,8,9])
print("a = ", a)
print("数组的维度:", a.ndim)
print("数组的形状:", a.shape)
print("数组的大小:", a.size)
print("数组内元素的数据类型:", a.dtype)
print("数组内元素占计算机内存的大小:", a.itemsize)
print("数组在内存中的地址:", a.data)
# 生成二维数组
b = np.array([[1,3,5],[2,4,6],[7,8,9]])
print("b = ", b)
print("数组的维度:", b.ndim)
print("数组的形状:", b.shape)
# 生成三维数组,并指定数据类型
c = np.array([[[1,2,3],[4,5,6],[7,8,9]],[[9,8,7],[6,5,4],[3,2,1]]], dtype=int)
print("c = ", c)
print("数组的维度:", c.ndim)
print("数组的形状:", c.shape)

在PyCharm下运行程序,结果如图11.7所示。

 程序中array()函数与Python标准库中的array不同,Python标准库的array只处理一维
数组,请不要混淆。
NumPy库的array()函数在生成数组时,会把序列的序列转换为二维数组,序列内嵌
套序列的序列会生成三维数组,以此类推。在生成数组时,我们可以显式地声明数组
的数据类型。
NumPy库常用的生成数组的函数如下:
·array():用于把输入的序列(元组、列表等)转换成一维或多维数组,默认情况
下会复制输入值。
·zeros():用于生成元素全为0的数组。
·ones():用于生成元素全为1的数组。
·zeros_like():返回一个与输入数组的形状和数据类型相同但元素全为0的数组。
·ones_like():返回一个与输入数组的形状和数据类型相同但元素全为1的数组。
·arange():用于生成一维数组序列。
·linspace():用于生成指定大小的一维数组。
·numpy.random.rand():用于生成指定大小且元素在[0,1)区间上均匀分布的数组。
·numpy.random.randn():用于生成服从标准分布的数组。
NumPy库常用的数组函数如下:
·add():用于实现两个数组元素相加。
·subtract():用于实现两个数组元素相减。
·multiply():用于实现两个数组元素相乘。
·divide():用于实现两个数组元素相除。
·power():用于实现两个数组的幂运算,第一个数组元素作为底,第二个数组元组
作为指数。
·mod()、remainder():用于实现两个数组元素相除,并返回结果的余数。
·absolute()、fabs():返回数组元素的绝对值。
·exp():返回输入数组以e为底的指数结果。
·exp2():返回输入数组以2为底的指数结果。
·log():返回数组元素的自然对数。
·log2():返回数组元素以2为底的对数。
·log10():返回数组元素以10为底的对数。
·sqrt():返回数组元素的平方根。
·square():返回数组元素的平方。
·floor():作向下取整运算。
·ceil():作向上取整运算。
·trunc():截掉小数点后面的数。
·sin()、cos()、tan():分别返回数组元素的正弦值、余弦值和正切值。
·arcsin()、arccos()、arctan():分别返回数组元素的反正弦值、反余弦值和反正切
值。
·greater(x1,x2):如果x1大于x2,则返回布尔真值。
·greater_equal(x1,x2):如果x1大于等于x2,则返回布尔真值。
·less(x1,x2):如果x1小于x2,则返回布尔真值。
·less_equal(x1,x2):如果x1小于等于x2,则返回布尔真值。
·not_equal():如果x1不等于x2,则返回布尔真值。
·equal():如果x1等于x2,则返回布尔真值。
更多关于NumPy库的相关知识,在这里就不展开讲述了,感兴趣的读者请自行查
询相关的API资料。
(2)matplotlib库
matplotlib是一个主要用于绘制二维图形的Python库,它依赖于NumPy库,提供出
色的绘图能力。这里重点介绍matplotlib库的pyplot模块。
matplotlib.pyplot模块提供了一些简单的命令,以方便用户创建图形。每个pyplot函
数都负责一项工作,例如创建图形、在图形上建立一个绘图区、在绘图区上添加线条
和图形标签等。pyplot会自动根据调用的函数记录下绘图的状态,例如当前图形、绘图
区域等。
pyplot模块下的常用函数如下:
·pyplot.plot():用于绘图,根据接收的参数不同,能够绘制不同的图形,例如绘制
直线、曲线,设置所绘制线条的宽度、颜色等。
·pyplot.title():用于设置所绘制图形的标题。
·pyplot.savefig():以图片的形式保存所绘制的图形。
·pyplot.setp():用来查看某个线条对象的可设置属性。
·pyplot.gca():用于返回当前的Axes(绘图区域的一部分)。
·pyplot.gcf():用于返回当前的图形。
·pyplot.figure():用于创建图形,是可选的。
·pyplot.subplot():用于创建子图。该方法包含三个参数,分别是numrows、
numcols和fignum。参数fignum的取值范围应该介于1与numrows×numcols之间。
numrows和numcols把画布划分成numrows×numcols个方格,fignum定义在哪张子图上进
行操作。子图从第一行开始从左向右编号,然后是第二行……,直到最后一行。如果
numrows×numcols<10,则可以采用简写的方式,如subplot(1,2,1)可以简写为
subplot(121)。
·pyplot.clf():用于清除当前的图形。
·pyplot.cla():用于清除当前的Axes。
·pyplot.text():用于设置图形的文本属性,它会把添加的文本任意地放到图形的空
白位置上。
·pyplot.annotate():用于在图形的特定位置添加文本。
·pyplot.ylabel():用于添加y轴标签。
·pyplot.xlabel():用于添加x轴标签。
·pyplot.pie():用于绘制饼状图。
·pyplot.bar():用于绘制柱状图。
更多关于matplotlib库的相关函数,请读者自行查阅学习。
7.拓展训练
绘制一条0~360°(2π)的正弦函数sin(x)曲线。
完整的代码如下:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @author : liuhefei
# @desc: 绘制正弦曲线
import numpy as np
import matplotlib.pyplot as plt
if __name__ == "__main__":
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用于正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
x = np.arange(0, 2 * np.pi, 0.01) # 从0到2π,以0.01步进
y = np.sin(x)
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用于正常显示中文标签
plt.plot(x, y, linewidth=4) # 设置线的宽度
# 设置线条颜色,y表示黄色,g表示绿色,b表示黑色,c表示灰色,默认为蓝色
plt.plot(x, y, 'g')
plt.title("正弦曲线图") # 图像标题
plt.show() # 绘制

在PyCharm下运行程序,结果如图11.8所示。

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐