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

绪论

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

1.对比Python和numpy的性能

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

需求:

  • 实现两个数组的加法
  • 数组 A 是 0 到 N-1 数字的平方
  • 数组 B 是 0 到 N-1 数字的立方
python 复制代码
import numpy as np
def numpy_sum(text_num):
    """numpy的测试函数"""
    arra=np.arange(text_num) ** 2
    arrb=np.arange(text_num) ** 3
    return arra+arrb

def 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_sum

text_num=100

#保存Python的测试时间
#100,1000的数组长度测试起来时间可能比较小;可视化不太方便
python_times=[]
#进行到1000000次的时间测试
while text_num <= 1000000:
    result= %timeit -o python_sum(text_num)
    text_num=text_num*10
    python_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

下面通过折线图进行对比

python 复制代码
#数据可视化对比
import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatter

x_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(

绘制柱状图

python 复制代码
#绘制柱状图
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这样可视化会比较好看

相关推荐
新子y11 分钟前
【小白笔记】最大交换 (Maximum Swap)问题
笔记·python
程序员爱钓鱼1 小时前
Python编程实战 · 基础入门篇 | Python的缩进与代码块
后端·python
pr_note2 小时前
python|if判断语法对比
python
apocelipes5 小时前
golang unique包和字符串内部化
java·python·性能优化·golang
bmcyzs5 小时前
【展厅多媒体】触摸查询一体机实现数据可视化
经验分享·科技·信息可视化·数据挖掘·数据分析·设计规范
Geoking.5 小时前
NumPy zeros() 函数详解
python·numpy
Full Stack Developme5 小时前
java.text 包详解
java·开发语言·python
丁浩6666 小时前
Python机器学习---2.算法:逻辑回归
python·算法·机器学习
B站_计算机毕业设计之家7 小时前
计算机毕业设计:Python农业数据可视化分析系统 气象数据 农业生产 粮食数据 播种数据 爬虫 Django框架 天气数据 降水量(源码+文档)✅
大数据·爬虫·python·机器学习·信息可视化·课程设计·农业
Q_Q5110082857 小时前
python+uniapp基于微信小程序的旅游信息系统
spring boot·python·微信小程序·django·flask·uni-app·node.js