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

相关推荐
Elastic 中国社区官方博客1 小时前
让我们把这个 expense 工具从 n8n 迁移到 Elastic One Workflow
大数据·运维·elasticsearch·搜索引擎·ai·信息可视化·全文检索
程序员佳佳1 小时前
2025年大模型终极横评:GPT-5.2、Banana Pro与DeepSeek V3.2实战硬核比拼(附统一接入方案)
服务器·数据库·人工智能·python·gpt·api
刘某的Cloud2 小时前
列表、元组、字典、集合-组合数据类型
linux·开发语言·python
ys~~2 小时前
git学习
git·vscode·python·深度学习·学习·nlp·github
Mqh1807622 小时前
day46 Grad-CAM
python
郝学胜-神的一滴2 小时前
Python魔法函数一览:解锁面向对象编程的奥秘
开发语言·python·程序人生
白露与泡影3 小时前
使用systemd,把服务装进 Linux 心脏里~
linux·运维·python
yaoh.wang3 小时前
力扣(LeetCode) 100: 相同的树 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·跳槽
Sunsets_Red4 小时前
2025 FZYZ夏令营游记
java·c语言·c++·python·算法·c#
guslegend4 小时前
第2章:LangChain大模型工具开发(Agent工具能力)
python