关于“Python”的核心知识点整理大全44

目录

​编辑

15.3.4 模拟多次随机漫步

rw_visual.py

注意

15.3.5 设置随机漫步图的样式

15.3.6 给点着色

rw_visual.py

15.3.7 重新绘制起点和终点

rw_visual.py

15.3.8 隐藏坐标轴

rw_visual.py

15.3.9 增加点数

rw_visual.py

15.3.10 调整尺寸以适合屏幕

rw_visual.py

15.4 使用 Pygal 模拟掷骰子

15.4.1 安装 Pygal

注意

15.4.2 Pygal 画廊

15.4.3 创建 Die 类

die.py

15.4.4 掷骰子

die_visual.py

15.4.5 分析结果

die_visual.py

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新!


15.3.4 模拟多次随机漫步

每次随机漫步都不同,因此探索可能生成的各种模式很有趣。要在不多次运行程序的情况下 使用前面的代码模拟多次随机漫步,一种办法是将这些代码放在一个while循环中,如下所示:

rw_visual.py
import matplotlib.pyplot as plt
from random_walk import RandomWalk
# 只要程序处于活动状态,就不断地模拟随机漫步
while True:# 创建一个RandomWalk实例,并将其包含的点都绘制出来rw = RandomWalk() rw.fill_walk()plt.scatter(rw.x_values, rw.y_values, s=15)plt.show()
1 keep_running = input("Make another walk? (y/n): ")
if keep_running == 'n':break 

这些代码模拟一次随机漫步,在matplotlib查看器中显示结果,再在不关闭查看器的情况下暂 停。如果你关闭查看器,程序将询问你是否要再模拟一次随机漫步。如果你输入y,可模拟多次 随机漫步:这些随机漫步都在起点附近进行,大多沿特定方向偏离起点,漫步点分布不均匀等。 要结束程序,请输入n。


注意

如果你使用的是Python 2.7,别忘了将Ø处的input()替换为raw_input()。


15.3.5 设置随机漫步图的样式

在本节中,我们将定制图表,以突出每次漫步的重要特征,并让分散注意力的元素不那么显 眼。为此,我们确定要突出的元素,如漫步的起点、终点和经过的路径。接下来确定要使其不那 么显眼的元素,如刻度标记和标签。最终的结果是简单的可视化表示,清楚地指出了每次漫步经 过的路径.

15.3.6 给点着色

我们将使用颜色映射来指出漫步中各点的先后顺序,并删除每个点的黑色轮廓,让它们的颜 色更明显。为根据漫步中各点的先后顺序进行着色,我们传递参数c,并将其设置为一个列表, 其中包含各点的先后顺序。由于这些点是按顺序绘制的,因此给参数c指定的列表只需包含数字 1~5000,如下所示:

rw_visual.py
--snip--
while True:# 创建一个RandomWalk实例,并将其包含的点都绘制出来rw = RandomWalk()rw.fill_walk()
1 point_numbers = list(range(rw.num_points))
plt.scatter(rw.x_values, rw.y_values, c=point_numbers, cmap=plt.cm.Blues,edgecolor='none', s=15)plt.show()keep_running = input("Make another walk? (y/n): ")--snip-- 

在1处,我们使用了range()生成了一个数字列表,其中包含的数字个数与漫步包含的点数相 同。接下来,我们将这个列表存储在point_numbers中,以便后面使用它来设置每个漫步点的颜 色。我们将参数c设置为point_numbers,指定使用颜色映射Blues,并传递实参edgecolor=none以 删除每个点周围的轮廓。最终的随机漫步图从浅蓝色渐变为深蓝色,如图15-9所示。

15.3.7 重新绘制起点和终点

除了给随机漫步的各个点着色,以指出它们的先后顺序外,如果还能呈现随机漫步的起点和 终点就更好了。为此,可在绘制随机漫步图后重新绘制起点和终点。我们让起点和终点变得更大, 并显示为不同的颜色,以突出它们,如下所示:

rw_visual.py
--snip--
while True:--snip--plt.scatter(rw.x_values, rw.y_values, c=point_numbers, cmap=plt.cm.Blues,edgecolor='none', s=15)# 突出起点和终点plt.scatter(0, 0, c='green', edgecolors='none', s=100)plt.scatter(rw.x_values[-1], rw.y_values[-1], c='red', edgecolors='none',s=100)plt.show()--snip--

为突出起点,我们使用绿色绘制点(0, 0),并使其比其他点大(s=100)。为突出终点,我们在 漫步包含的最后一个x和y值处绘制一个点,将其颜色设置为红色,并将尺寸设置为100。请务必 将这些代码放在调用plt.show()的代码前面,确保在其他点的上面绘制起点和终点。 如果你现在运行这些代码,将能准确地知道每次随机漫步的起点和终点(如果起点和终点不 明显,请调整它们的颜色和大小,直到明显为止)。

15.3.8 隐藏坐标轴

下面来隐藏这个图表中的坐标轴,以免我们注意的是坐标轴而不是随机漫步路径。要隐藏坐 标轴,可使用如下代码:

rw_visual.py
--snip--
while True:--snip--plt.scatter(rw.x_values[-1], rw.y_values[-1], c='red', edgecolors='none',s=100)# 隐藏坐标轴
1 plt.axes().get_xaxis().set_visible(False)
plt.axes().get_yaxis().set_visible(False)plt.show()--snip-- 

为修改坐标轴,使用了函数plt.axes()(见Ø)来将每条坐标轴的可见性都设置为False。随 着你越来越多地进行数据可视化,经常会看到这种串接方法的方式。 如果你现在运行rw_visual.py,将看到一系列图形,但看不到坐标轴。

15.3.9 增加点数

下面来增加点数,以提供更多的数据。为此,我们在创建RandomWalk实例时增大num_points 的值,并在绘图时调整每个点的大小,如下所示:

rw_visual.py
--snip--
while True:#创建一个RandomWalk实例,并将其包含的点都绘制出来rw = RandomWalk(50000)rw.fill_walk()# 绘制点并将图形显示出来point_numbers = list(range(rw.num_points)) plt.scatter(rw.x_values, rw.y_values, c=point_numbers, cmap=plt.cm.Blues,edgecolor='none', s=1)--snip-- 

这个示例模拟了一次包含50 000个点的随机漫步(以模拟现实情况),并将每个点的大小都 设置为1。最终的随机漫步图更纤细,犹如云朵,如图15-10所示。正如你看到的,我们使用简单 的散点图制作出了一件艺术品!

请尝试修改上述代码,看看将漫步包含的点数增加到多少后,程序的运行速度变得极其缓慢 或绘制出的图形变得很难看。

15.3.10 调整尺寸以适合屏幕

图表适合屏幕大小时,更能有效地将数据中的规律呈现出来。为让绘图窗口更适合屏幕大小, 可像下面这样调整matplotlib输出的尺寸:

rw_visual.py
--snip--
while True:# 创建一个RandomWalk实例,并将其包含的点都绘制出来rw = RandomWalk()rw.fill_walk()# 设置绘图窗口的尺寸plt.figure(figsize=(10, 6))--snip-- 

函数figure()用于指定图表的宽度、高度、分辨率和背景色。你需要给形参figsize指定一个 元组,向matplotlib指出绘图窗口的尺寸,单位为英寸。

Python假定屏幕分辨率为80像素/英寸,如果上述代码指定的图表尺寸不合适,可根据需要调 整其中的数字。如果你知道自己的系统的分辨率,可使用形参dpi向figure()传递该分辨率,以 有效地利用可用的屏幕空间,如下所示:

plt.figure(dpi=128, figsize=(10, 6))

15.4 使用 Pygal 模拟掷骰子

在本节中,我们将使用Python可视化包Pygal来生成可缩放的矢量图形文件。对于需要在尺寸 不同的屏幕上显示的图表,这很有用,因为它们将自动缩放,以适合观看者的屏幕。如果你打算 以在线方式使用图表,请考虑使用Pygal来生成它们,这样它们在任何设备上显示时都会很美观。

在这个项目中,我们将对掷骰子的结果进行分析。掷6面的常规骰子时,可能出现的结果为 1~6点,且出现每种结果的可能性相同。然而,如果同时掷两个骰子,某些点数出现的可能性将 比其他点数大。为确定哪些点数出现的可能性最大,我们将生成一个表示掷骰子结果的数据集, 并根据结果绘制出一个图形。 在数学领域,常常利用掷骰子来解释各种数据分析,但它在赌场和其他博弈场景中也得到了实际应用,在游戏《大富翁》以及众多角色扮演游戏中亦如此。

15.4.1 安装 Pygal

请使用pip来安装Pygal(如果还未使用过pip,请参阅12.2.1节)。 在Linux和OS X系统中,应执行的命令类似于下面这样:

pip install --user pygal

在Windows系统中,命令类似于下面这样:

python -m pip install --user pygal

注意

你可能需要使用命令pip3而不是pip,如果这还是不管用,你可能需要删除标志--user。


15.4.2 Pygal 画廊

要了解使用Pygal可创建什么样的图表,请查看图表类型画廊:访问http://www.pygal.org/,单 击Documentation,再单击Chart types。每个示例都包含源代码,让你知道这些图表是如何生成的。

15.4.3 创建 Die 类

下面的类模拟掷一个骰子:

die.py
from random import randint
class Die():"""表示一个骰子的类"""
1 def __init__(self, num_sides=6):"""骰子默认为6面"""self.num_sides = num_sidesdef roll(self):""""返回一个位于1和骰子面数之间的随机值"""
2 return randint(1, self.num_sides) 

方法__init__()接受一个可选参数。创建这个类的实例时,如果没有指定任何实参,面数默 认为6;如果指定了实参,这个值将用于设置骰子的面数(见1)。骰子是根据面数命名的,6面 的骰子名为D6,8面的骰子名为D8,以此类推。

方法roll()使用函数randint()来返回一个1和面数之间的随机数(见2)。这个函数可能返回起始值1、终止值num_sides或这两个值之间的任何整数。

15.4.4 掷骰子

使用这个类来创建图表前,先来掷D6骰子,将结果打印出来,并检查结果是否合理:

die_visual.py
from die import Die
# 创建一个D6
1 die = Die()
# 掷几次骰子,并将结果存储在一个列表中
results = []
2 for roll_num in range(100):result = die.roll()results.append(result)
print(results) 

在1处,我们创建了一个Die实例,其面数为默认值6。在2处,我们掷骰子100次,并将每次 的结果都存储在列表results中。下面是一个示例结果集:

[4, 6, 5, 6, 1, 5, 6, 3, 5, 3, 5, 3, 2, 2, 1, 3, 1, 5, 3, 6, 3, 6, 5, 4,1, 1, 4, 2, 3, 6, 4, 2, 6, 4, 1, 3, 2, 5, 6, 3, 6, 2, 1, 1, 3, 4, 1, 4,3, 5, 1, 4, 5, 5, 2, 3, 3, 1, 2, 3, 5, 6, 2, 5, 6, 1, 3, 2, 1, 1, 1, 6,5, 5, 2, 2, 6, 4, 1, 4, 5, 1, 1, 1, 4, 5, 3, 3, 1, 3, 5, 4, 5, 6, 5, 4,1, 5, 1, 2]

通过快速扫描这些结果可知,Die类看起来没有问题。我们见到了值1和6,这表明返回了最 大和最小的可能值;我们没有见到0或7,这表明结果都在正确的范围内。我们还看到了1~6的所 有数字,这表明所有可能的结果都出现了。

15.4.5 分析结果

为分析掷一个D6骰子的结果,我们计算每个点数出现的次数:

die_visual.py
--snip--
# 掷几次骰子,并将结果存储在一个列表中
results = []
1 for roll_num in range(1000):result = die.roll()results.append(result)
# 分析结果
frequencies = []
2 for value in range(1, die.num_sides+1):
3 frequency = results.count(value)
4 frequencies.append(frequency)
print(frequencies)

由于我们将使用Pygal来进行分析,而不是将结果打印出来,因此可以将模拟掷骰子的次数 增加到1000(见1)。为分析结果,我们创建空列表frequencies,用于存储每种点数出现的次 数。在2处,我们遍历可能的点数(这里为1~6),计算每种点数在results中出现了多少次(见3), 并将这个值附加到列表frequencies的末尾(见4)。接下来,我们在可视化之前将这个列表打印 出来: 

[155, 167, 168, 170, 159, 181]

结果看起来是合理的:我们看到了6个值——掷D6骰子时可能出现的每个点数对应一个;我 们还发现,没有任何点数出现的频率比其他点数高很多。下面来可视化这些结果。


关于“Python”的核心知识点整理大全37-CSDN博客

关于“Python”的核心知识点整理大全25-CSDN博客

关于“Python”的核心知识点整理大全12-CSDN博客

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新!

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

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

相关文章

Linux磁盘与文件管理

目录 一、磁盘介绍 1. 磁盘数据结构 2. 磁盘的接口类型 3. 磁盘在Linux上的表现形式 二、磁盘分区与MBR 1. 分区优缺点 2. 分区方式 3. MBR分区 4. GPT分区 三、文件系统 1. 文件系统的组成 2. 默认的文件系统 3. 文件系统的作用 4. 模拟破坏文件与修复文件 4…

C语言二维数值数组常用算法------------(C每日一编程)

--主、次对角线求和 --上、下三角求和 --N*N方阵转置 --杨辉三角 正文开始&#xff1a; 主对角线&#xff1a; 用两个双重for循环 int a[3][3], i, j, s 0; for (i 0; i < 3; i)for (j 0; j < 3; j)if (i j)s s a[i][j]; 次对角线&#xff1a; 用两个双重…

Next Station of Flink CDC

摘要&#xff1a;本文整理自阿里云智能 Flink SQL、Flink CDC 负责人伍翀&#xff08;花名&#xff1a;云邪&#xff09;&#xff0c;在 Flink Forward Asia 2023 主会场的分享。Flink CDC 是一款基于 Flink 打造一系列数据库的连接器。本次分享主要介绍 Flink CDC 开源社区在过…

uniapp实现前端银行卡隐藏中间的数字,及隐藏姓名后两位

Vue 实现前端银行卡隐藏中间的数字 主要应用了 filters过滤器 来实现效果 实现效果&#xff0c;如图&#xff1a; <template><div><div style"background-color: #f4f4f4;margin:50px 0 0 460px;width:900px;height:300px;"><p>原来&#…

python之Selenium WebDriver安装与使用

首先把python下载安装后&#xff0c;再添加到环境变量中&#xff0c;再打开控制台输入: pip install selenium 正常情况下是安装好的&#xff0c;检查一下“pip show selenium”命令&#xff0c;出现版本号就说明安装好了。 1&#xff1a;如果出现安装错误&#xff1a; 那就用“…

代码随想录 Leetcode27. 移除元素

题目&#xff1a; 代码(首刷看解析 2023年12月28日)&#xff1a; class Solution { public:int removeElement(vector<int>& nums, int val) {int n nums.size();int slowIndex 0;for(int fastIndex 0; fastIndex < n; fastIndex){if(val ! nums[fastIndex])…

电影“AI化”已成定局,华为、小米转战入局又将带来什么?

从华为、Pika、小米等联合打造电影工业化实验室、到Pika爆火&#xff0c;再到国内首部AI全流程制作《愚公移山》开机……业内频繁的新动态似乎都在预示着2023年国内电影开始加速进入新的制片阶段&#xff0c;国内AI电影热潮即将来袭。 此时以华为为首的底层技术科技企业加入赛…

leaflet学习笔记-地图缩略图(鹰眼)的添加(三)

介绍 地图缩略图控件有助于用户了解主窗口显示的地图区域在全球、全国、全省、全市等范围内的相对位置&#xff0c;也称为鹰眼图。Leaflet提供了好几种地图缩略图控件&#xff0c;本文介绍其中一个最常用控件&#xff0c;即插件Leaflet.MiniMap。 依赖添加 这些地图控件都可以…

使用机器学习进行语法错误检测/纠正

francescofranco_39234 一、说明 一般的学习&#xff0c;特别是深度学习&#xff0c;促进了自然语言处理。各种模型使人们能够执行机器翻译、文本摘要和情感分析——仅举几个用例。今天&#xff0c;我们将研究另一个流行的用途&#xff1a;我们将使用Gramformer构建一个用于机器…

React学习计划-React16--React基础(七)redux使用与介绍

笔记gitee地址 一、redux是什么 redux是一个专门用于做状态管理的js库&#xff08;不是react插件库&#xff09;它可以用在react、angular、vue的项目中&#xff0c;但基本与react配合使用作用&#xff1a;集中式管理react应用中多个组件共享的状态 二、什么情况下需要使用r…

sheng的学习笔记-卷积神经网络

源自吴恩达的深度学习课程&#xff0c;仅用于笔记&#xff0c;便于自行复习 导论 1&#xff09;什么是卷积神经网络 卷积神经网络&#xff0c;也就是convolutional neural networks &#xff08;简称CNN&#xff09;&#xff0c;使用卷积算法的神经网络&#xff0c;常用于计…

感染了后缀为.[sqlback@memeware.net].2700勒索病毒如何应对?数据能够恢复吗?

导言&#xff1a; 近期&#xff0c;[sqlbackmemeware.net].2700 勒索病毒成为网络安全的一大威胁。该勒索病毒采用高度复杂的加密算法&#xff0c;将用户文件加密并勒索赎金。了解该病毒的特征对于有效恢复被加密数据以及预防进一步感染至关重要。如果受感染的数据确实有恢复的…

linux 网络工具(一)

linux 网络工具 1. nmcli命令1.1 介绍1.2 networking 网络控制1.3 connection 连接管理1.4 device 设备管理1.5 nmcli 返回状态码 2. ifcfg命令家族2.1 ifconfig2.2 route2.3 netstat 3. 静态路由CentosUbuntu - netplanUbuntu - network-manager 1. nmcli命令 1.1 介绍 RHEL…

工具系列:TimeGPT_(6)同时预测多个时间序列

TimeGPT提供了一个强大的多系列预测解决方案&#xff0c;它涉及同时分析多个数据系列&#xff0c;而不是单个系列。该工具可以使用广泛的系列进行微调&#xff0c;使您能够根据自己的特定需求或任务来定制模型。 # Import the colab_badge module from the nixtlats.utils pac…

HTML简介、基本骨架、标签的关系、注释、路径

1 HTML HTML超文本标记语言 超文本——链接 标记——标记也叫标签&#xff0c;带尖括号<>的文本 标签语法&#xff1a; 标签成对出现&#xff0c;中间包裹内容 <>里面放英文字母(标签名) 结束标签比开始标签多/ 拓展&#xff1a; 双标签&#xff1a;成对出现的标签…

生产系统稳定上线600天!中国联通CUDB for OceanBase的开源共建和规模化应用

中国联通软件研究院架构部平台承载了上千应用的数据库需求&#xff0c;并且现存大量数据库使用过程缺少规范、缺少监控&#xff0c;同时还存在着数据库核心技术相关风险。为了实现核心技术自主可控&#xff0c;及时为用户解决线上问题、满足用户的功能需求&#xff0c;提供物美…

gnu工程的编译 - 以libiconv为例

文章目录 gnu工程的编译 - 以libiconv为例概述gnu官方源码包的发布版从官方的代码库直接迁出的git版源码如果安装了360, 需要添加开发相关的目录到信任区生成 configrue 的方法备注END gnu工程的编译 - 以libiconv为例 概述 gnu工程的下载分2种: gnu官方源码包的发布版 这种…

gitee+picgo+typora图床搭建

giteepicgotypora图床搭建 1.安装typora 官网下载直接安装&#xff1a;https://www.typora.io/#download 2.编辑typora图像设置 打开 文件 -> 偏好设置 -> 图像设置 插入图片时 选择 上传图片设置 上传服务 为 PicGo-Core(command line) 3.为typora安装PicGo-Core 点…

达梦dm.ini参数之SELECT_LOCK_MODE详解

一、背景 1.现象概述 某项目当晚分区表变更&#xff0c;因为manager工具多开了1个窗口执行了语句慢取消了&#xff0c;新开了一个会话窗口执行添加分区/删除分区/truncate分区卡死了&#xff0c;v$session查不到关于这张分区表的阻塞和事务&#xff0c;但是在v$lock里根据表的…

Golang 通用代码生成器仙童发布 2.4.0 电音仙女尝鲜版二,改进三大部分生成功能群

Golang 通用代码生成器仙童发布 2.4.0 电音仙女尝鲜版二&#xff0c;改进三大部分生成功能群 Golang 通用代码生成器仙童已发布 2.4.0 电音仙女尝鲜版二及其介绍视频。尝鲜版二改进了三大部分生成功能群。 视频请见&#xff1a; https://www.bilibili.com/video/BV1Q64y1H75…