数据可视化训练第二天(对比Python与numpy中的ndarray的效率并且可视化表示)

绪论

千里之行始于足下;继续坚持

1.对比Python和numpy的性能

使用魔法指令%timeit进行对比
需求:

  • 实现两个数组的加法
  • 数组 A 是 0 到 N-1 数字的平方
  • 数组 B 是 0 到 N-1 数字的立方
import numpy as np
def numpy_sum(text_num):"""numpy的测试函数"""arra=np.arange(text_num) ** 2arrb=np.arange(text_num) ** 3return arra+arrbdef python_sum(text_num):"""原生Python的测试函数"""ab_sum=[]a=[value**2 for value in range(0,text_num)]b=[value**3 for value in range(0,text_num)]for i in range(0,text_num):ab_sum.append(a[i]+b[i])return ab_sumtext_num=100#保存Python的测试时间
#100,1000的数组长度测试起来时间可能比较小;可视化不太方便
python_times=[]
#进行到1000000次的时间测试
while text_num <= 1000000:result= %timeit -o python_sum(text_num)text_num=text_num*10python_times.append(result.average)#保存numpy的测试时间
numpy_times=[]
text_num=100
while text_num <= 1000000:result= %timeit -o numpy_sum(text_num)numpy_times.append(result.average)text_num=text_num*10

下面通过折线图进行对比

#数据可视化对比
import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatterx_values=[100,1000,10000,100000,1000000]
python_y_values=np.array(python_times)*1000000
numpy_y_values=np.array(numpy_times)*1000000
fig,ax=plt.subplots()
ax.plot(x_values,python_y_values,linewidth=3,label='python')
ax.plot(x_values,numpy_y_values,linewidth=3,label='numpy')
ax.set_title("Comparing Numpy's Time with Python",fontsize=14)
ax.set_xlabel('text sum',fontsize=14)
ax.set_ylabel('time/us',fontsize=14)
#设置显示所有刻度
#ax.set_xticks(x_values,minor=True)
#使x轴完全表示,使用formatter自定义格式
formatter=ScalarFormatter(useMathText=True)#使用数学格式表示
formatter.set_powerlimits((0,7))
ax.xaxis.set_major_formatter(formatter)
ax.legend()#显示label标签
plt.show(

在这里插入图片描述
绘制柱状图

#绘制柱状图
fig,ax=plt.subplots()
bar_width=0.35
ax.bar(x_values,python_y_values,bar_width,label='Python')
ax.bar(x_values,numpy_y_values,bar_width,label='Numpy')ax.legend()#legend() 函数用于添加图例到图形上,就是右上角的图形
plt.tight_layout()
plt.show()

在这里插入图片描述
100和1000的时间太短了;可以从100000开始到100000000这样可视化会比较好看

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

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

相关文章

“1-of-k“编码(哑编码)

"1-of-k"编码&#xff0c;也称为"one-hot"编码&#xff0c;是一种常用的向量编码方法&#xff0c;用于表示分类变量。在计算机科学和机器学习领域&#xff0c;它是一种重要的数据预处理技术。 1. 分类变量&#xff1a;在机器学习中&#xff0c;数据通常包含…

互动科技如何强化法治教育基地体验?

近年来&#xff0c;多媒体互动技术正日益融入我们生活的各个角落&#xff0c;法治教育领域亦不例外。步入法治教育基地&#xff0c;我们不难发现&#xff0c;众多创新的多媒体互动装置如雨后春笋般涌现&#xff0c;这些装置凭借前沿的科技手段&#xff0c;不仅极大地丰富了法制…

【RabbitMQ】消息队列 - RabbitMQ的使用记录

目录 一、什么是消息队列 二、什么是RabbitMQ 三、安装RabbitMQ 3.1 安装Erlang环境 3.2 安装RabbitMQ 3.3 打开服务管理界面 3.4 常用命令 四、Python示例代码 4.1 发送数据 4.2 接收数据 一、什么是消息队列 消息队列(Message Queue)是一种用于在应用程序之间传递消…

nginx在CentOS系统安装

一&#xff1a;nginx在CentOS系统安装 1.更新系统软件包列表 yum update2.安装EPEL存储库 通过使用EPEL&#xff0c;您可以访问大量的开源软件包&#xff0c;包括Web服务器、数据库、开发工具、版本控制系统、网络安全工具等等。 yum install epel-releas3.安装Nginx yum in…

【数据结构与算法】Huffman编码/译码(C/C++)

实践要求 1. 问题描述 利用哈夫曼编码进行信息通讯可以大大提高信道利用率&#xff0c;缩短信息传输时间&#xff0c;降低传输成本。但是&#xff0c;这要求在发送端通过一个编码系统对待传数据预先编码&#xff1b;在接收端将传来的数据进行译码(复原)。对于双工信道(即可以…

上亿用户面临风险!小米、WPS等知名安卓应用竟藏有“文件覆盖”漏洞

Google Play商店中的几款热门安卓应用程序容易受到与路径遍历相关的漏洞攻击&#xff0c;该漏洞的代号为“Dirty Stream”攻击&#xff0c;恶意应用程序可能会利用此漏洞覆盖易受攻击的应用程序主目录中的任意文件。 微软威胁情报团队的Dimitrios Valsamaras在周三发布的一份报…

pytorch学习

目前的状态&#xff1a;人有点晕。好多细节的东西都不知道怎么来的。大方向有所把握&#xff1a; 1. 准备数据集&#xff1a;看起来很简单&#xff0c;其实不然。如何把文件读取进来&#xff0c;变成pytorch所需要的数据类型。 图片&#xff1a;你就需要ToTensor&#xff0c;…

java数组查找方法(二分查找,顺序查找、插值查找法)

文章目录 前言一、二分查找法二、顺序查找法三、插值查找法总结 前言 查找&#xff08;Searching&#xff09;就是根据给定的某个值&#xff0c;在查找表中确定一个其关键字等于给定值的数据元素&#xff08;或记录&#xff09;。本文介绍Java数组中三种常见的查找算法&#x…

elementui- button按钮自适应大小

<el-button type"primary" class"daochu" click"download">导出</el-button> .daochu {width: calc(100vw * 80 / 1920);height: calc(100vw * 30 / 1920);font-size: calc(100vw * 13 / 1920); } 效果图&#xff1a;

做一个属于自己的软件-pyside6快速上手教程

首先环境需要安装python3和pip&#xff0c;软件使用pycharm&#xff0c;安装也都很简单 首先需要安装pyside6,在终端执行&#xff1a; pip install pyside6 然后进入可视化编辑界面 pyside6-designer 进入后创建即可 可以从左侧点击鼠标拉组件进入到中间的工作区&#xff…

android基础-服务

同样使用intent来传递服务 oncreate是服务第一次启动调用&#xff0c;onStartCommand是服务每次启动的时候调用&#xff0c;也就是说服务只要启动后就不会调用oncreate方法了。可以在myservice中的任何位置调用stopself方法让服务停止下来。 服务生命周期 前台服务类似于通知会…

人人都是开发者?Baidu Comate智能代码助手改变你传统的编程之路

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 引入一、人人都是开发者二、Baidu Comate 智能编码助手2.1 Baidu Comate 是什么&#xff1f;2.2 Baidu Comate 支持那…

FANUC机器人工具坐标偏移的用法

一、工具坐标偏移的使用场景 在机器人位置不改变的情况下&#xff0c;工业机器人使用默认工具坐标系示教的一系列运动点位&#xff0c;要保持原本点位位置不变的情况下&#xff0c;改变机器人工具坐标的参数&#xff0c;就要用到机器人坐标转化的功能。在FANUC机器人上体现为机…

Vue10 组件通信-插槽

插槽 分成三种&#xff1a;默认插槽、具名插槽、作用域插槽 默认插槽 父组件father.vue <template><div class"father"><h3>父组件</h3><div class"content"><Category title"热门游戏列表"><ul>…

OSPF综合实验(超详细易懂)(HCIP)

1、拓扑信息 2、需求分析 3、IP规划 4、配置 5、测试 1、拓扑信息 2、需求分析 R4为ISP&#xff0c;其上只能配置I地址&#xff1b; R4与其他所有直连设备间均使用公…

【Linux系列】tail查询使用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

在数字化时代保持企业财务管理的持续技术创新

根据全球市场调查&#xff0c;在现阶段企业如果还不更新自身的商业运作模式&#xff0c;企业的业务可能会一点一点丧失市场竞争力。技术进步是所有行业发展的明显趋势。许多年轻的初创企业具有创新管理思维、精益求精的决策流程和现代化的商业基础设施&#xff0c;这些顺应时代…

转行网络安全的重要建议,助你顺利入门

目录 为什么写这篇文章 为什么我更合适回答这个问题 先问自己3个问题 1.一定要明确自己是否是真喜欢&#xff0c;还是一时好奇。 2.自学的习惯 3.选择网安、攻防这行的目标是什么&#xff1f; 确认无误后&#xff0c;那如何进入这个行业&#xff1f; 1.选择渗透测试集中…

重生奇迹mu烈火剑带什么技能

在重生奇迹mu游戏中&#xff0c;35级是每个职业的分水岭&#xff0c;只要到了35级&#xff0c;三职业都可以学习自己的高级技能&#xff0c;道士可以召唤自己的大狗&#xff0c;法师拥有冰咆哮&#xff0c;战士就是咱们今天要说的烈火剑法&#xff0c;这三种技能都需要玩家自己…

Python: 日期和时间格式化

from datetime import datetime# 获取当前时间 current_time datetime.now() print(f"current_time {current_time}")# yyyymmdd format_date current_time.strftime("%Y%m%d") print(f"format_date {format_date}")# yyyy-mm-dd format_dat…