数据可视化训练第二天(对比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这样可视化会比较好看
相关文章:

数据可视化训练第二天(对比Python与numpy中的ndarray的效率并且可视化表示)
绪论 千里之行始于足下;继续坚持 1.对比Python和numpy的性能 使用魔法指令%timeit进行对比 需求: 实现两个数组的加法数组 A 是 0 到 N-1 数字的平方数组 B 是 0 到 N-1 数字的立方 import numpy as np def numpy_sum(text_num):"""…...

【Java EE】数据库连接池详解
文章目录 🎍数据库连接池🌸Hikari🌸Druid 🍀MySQL开发企业规范⭕总结 🎍数据库连接池 在上⾯Mybatis的讲解中,我们使⽤了数据库连接池技术,避免频繁的创建连接,销毁连接 下⾯我们来了解下数据库连接池 数据库连接池负…...

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-15.4讲 GPIO中断实验-IRQ中断服务函数详解
前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…...
如何平衡RPA机器人的安全性与业务敏捷性,同时不牺牲用户体验?
平衡RPA机器人的安全性与业务敏捷性,同时不牺牲用户体验,是RPA实施中的一个关键挑战。以下是一些策略和最佳实践: ### 1. 安全设计原则 从设计阶段就将安全性纳入考虑,遵循安全设计原则。这意味着在开发RPA解决方案时࿰…...

地球行星UE5和UE4
地球行星,包含多种地球风格,可蓝图控制自转和停止,可材质自转. 支持版本4.21-5.4版本 下载位置:https://mbd.pub/o/bread/ZpWZm5lv b站工坊:https://gf.bilibili.com/item/detail/1105582041 _______________________…...
7.k8s中的名称空间namespace
目录 一、Namespace(命名空间) 二、查看系统的名称空间 1.查看系统中的名称空间列表 2.单独查看一个名称空间下的对应资源 三、名称空间的管理 1.创建名称空间 1.1响应式创建 1.2声明式创建 2.删除名称空间 四、资源引用名称空间 一、Namespace(命名空间) 命名空间(Name…...
上海企业源代码防泄密解决方案,企业源代码防泄密如何应对?
随之互联网的发展,企业员工因离职把企业源代码泄露或删库跑路的事情屡见不鲜,各大互联网公司基本都会出现源代码泄露的事情,这样的问题也成了企业在发展过程中不可避免的问题。企业源代码泄露会给企业带来的损失也是不可估量的,据…...

将要上市的自动驾驶新书《自动驾驶系统开发》中摘录各章片段 4
第十三章 车联网 数字化设备正变得越来越普遍并且相互联系。这些设备向数字生态系统智能部分的演进创造了迄今为止尚未解决安全问题的新颖应用。一个特定的例子是车辆,随着车辆从简单的交通方式发展到具有新的感知和通讯功能的智能实体,就成为智能城市的…...

OpenSearch 与 Elasticsearch:7 个主要差异及如何选择
OpenSearch 与 Elasticsearch:7 个主要差异及如何选择 1. 什么是 Elasticsearch? Elasticsearch 是一个基于 Apache Lucene 构建的开源、RESTful、分布式搜索和分析引擎。它旨在处理大量数据,使其成为日志和事件数据管理的流行选择。 Elasti…...

[Docker]容器的网络类型以及云计算
目录 知识梗概 1、常用命令2 2、容器的网络类型 3、云计算 4、云计算服务的几种主要模式 知识梗概 1、常用命令2 上一篇已经学了一些常用的命令,这里补充两个: 导出镜像文件:[rootdocker ~]# docker save -o nginx.tar nginx:laster 导…...

VMP 简单源码分析(.net)
虚拟机 获取CPU的型号 实现了一个指令集解释器,每个操作码对应一个特定的处理函数,用于执行相应的指令操作。在执行字节码时,解释器会根据操作码查找并调用相应的处理函数来执行指令。 截获异常 先由虚拟机处理 处理不了再抛出异常 priva…...

数据结构与算法学习笔记-二叉树的顺序存储表示法和实现(C语言)
目录 前言 1.数组和结构体相关的一些知识 1.数组 2.结构体数组 2.二叉树的顺序存储表示法和实现 1.定义 2.初始化 3.先序遍历二叉树 4.中序遍历二叉树 5.后序遍历二叉树 6.完整代码 前言 二叉树的非递归的表示和实现。 1.数组和结构体相关的一些知识 1.数组 在C语…...
如何在Windows和Linux中杀死Python进程
在开发和运行Python脚本的过程中,有时我们需要强制结束正在运行的Python进程。这可能是因为脚本运行出现了不可预见的错误,或者我们需要停止一个长时间执行的任务。无论原因如何,了解如何在不同操作系统中正确、安全地终止Python进程都是一项…...

零基础怎么快速进行单细胞分析?
近一段时间正在努力学习单细胞相关的理论知识,发现单细胞测序和普通的真核细胞的转录组非常相似。两者之间的最大的区别在于,一个测的是单个细胞的表达,一个测的是一堆细胞的表达之和。所以从这里就可以理解,为什么网上很多教程都…...
力扣数据库题库学习(5.10日)--1965. 丢失信息的雇员
1965. 丢失信息的雇员 问题链接🐷 思路分析 先看问题的描述 编写解决方案,找到所有 丢失信息 的雇员 id。当满足下面一个条件时,就被认为是雇员的信息丢失:雇员的 姓名 丢失了,或者雇员的 薪水信息 丢失了返回这些…...

漫威争锋Marvel Rivals怎么搜索 锁区怎么搜 游戏搜不到怎么办
即将问世的《漫威争锋》(Marvel Rivals)作为一款万众期待的PvP射击游戏新星,荣耀携手漫威官方网站共同推出。定档5月11日清晨9时,封闭Alpha测试阶段将正式揭开序幕,持续时间长达十天之久。在此首轮测试窗口,…...

SpringBoot实现统一返回值+全局异常处理
在这里首先感谢的就是程序员老罗,从他的项目里面学到了这些东西。 首先就是去创建一个SpringBoot项目,这里我就不多做赘述了 封装一个统一返回对象 package com.example.demo.vo;public class ResponseVO<T> {private String status;private In…...

windows连接CentOS数据库或Tomcat报错,IP通的,端口正常监听
错误信息 数据库错误: ERROR 2003 (HY000): Cant connect to MySQL server on x.x.x.x (10060) Tomcat访问错误: 响应时间过长 ERR_CONNECTION_TIMED_OUT 基础排查工作 【以下以3306端口为例,对于8080端口来说操作是一样的,只需…...

超详细的胎教级Stable Diffusion使用教程(一)
这套课程分为五节课,会系统性的介绍sd的全部功能和实操案例,让你打下坚实牢靠的基础 一、为什么要学Stable Diffusion,它究竟有多强大? 二、三分钟教你装好Stable Diffusion 三、小白快速上手Stable Diffusion 四、Stable dif…...
流媒体服务器(20)—— mediasoup 之媒体流score评分计算(一)
目录 前言 正文 《流媒体服务器》专栏总览丨蓄力计划_开源流媒体服务器对比-CSDN博客 前言 mediasoup 有一套评估媒体传输通道优劣的机制,主要是通过 score 评分来判断的。今天就先介绍一下这个机制的大体逻辑,后面的文章再详细介绍具体计算的算法。 正文 mediasoup 的…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...