在python中numpy.sum的性能真的好吗
首先我们应该知道np.sum是用C语言写的矢量计算,应用场景为规模较大的numpy数组求和。本文要说的就是numpy.sum是不是对规模较小的numpy数组求和也同样会有不错的性能?
代码:
import numpy as np
import time data_0 = []
data_1 = []
for _ in range(1000000):
tmp = np.random.randint(100, size=(6,))
data_0.append(tmp)
data_1.append(tmp.tolist()) a_time = time.time()
for d in data_0:
x=np.sum(d)
b_time = time.time()
print(b_time-a_time) a_time = time.time()
for a,b,c,d,e,f in data_1:
x=a+b+c+d+e+f
b_time = time.time()
print(b_time-a_time)
从上面的代码中我们可以知道,第一个运算是使用numpy.sum对长度为6的numpy数组求和;第二个运算是使用python原生的加和运算。
运算结果:
结果分析:
从上面的结果可以看到,在对小规模数组求和时,numpy.sum求和计算的性能是没有python原生计算性能高的,而且这个差距还很大,在上面的结果中相差了10多倍。由此我们可以知道,在对小规模数组求和时,使用python原生加和运算的性能要优于numpy.sum的。
========================================
numpy.sum的性能只有对较大规模数组求和才有很好体现,为此我们再加一个测试,对数组长度为10000的数组求和。
代码:
import numpy as np
import time data_0 = []
data_1 = []
for _ in range(100000):
tmp = np.random.randint(100, size=(10000,))
data_0.append(tmp)
data_1.append(tmp.tolist()) a_time = time.time()
for d in data_0:
x=np.sum(d)
b_time = time.time()
print(b_time-a_time) a_time = time.time()
for data in data_1:
s = 0
for d in data:
s += d
b_time = time.time()
print(b_time-a_time)
运行结果:
结果分析:
通过上面的测试,可以知道在对规模为10000的数组求和时,numpy.sum的性能是python原生的63倍;而在上面对长度为6的数组求和时,python原生的性能是numpy.sum的20倍。这个结果更加证明了numpy.sum只适合对大规模数组求和的情况,否则它的性能会原差于python原生。
=======================================
在python中numpy.sum的性能真的好吗的更多相关文章
- python中numpy.sum()函数
讲解清晰,转载自:https://blog.csdn.net/rifengxxc/article/details/75008427 众所周知,sum不传参的时候,是所有元素的总和.这里就不说了. 1 ...
- Python中Numpy ndarray的使用
本文主讲Python中Numpy数组的类型.全0全1数组的生成.随机数组.数组操作.矩阵的简单运算.矩阵的数学运算. 尽管可以用python中list嵌套来模拟矩阵,但使用Numpy库更方便. 定义数 ...
- 基于Python中numpy数组的合并实例讲解
基于Python中numpy数组的合并实例讲解 下面小编就为大家分享一篇基于Python中numpy数组的合并实例讲解,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 Python中n ...
- python中numpy矩阵运算操作大全(非常全)!
python中numpy矩阵运算操作大全(非常全) //2019.07.10晚python矩阵运算大全1.矩阵的输出形式:对于任何一个矩阵,python输出的模板是:import numpy as n ...
- Python中Numpy及Matplotlib使用
Python中Numpy及Matplotlib使用 1. Jupyter Notebooks 作为小白,我现在使用的python编辑器是Jupyter Notebook,非常的好用,推荐!!! 你可以 ...
- python 中的sum( )函数 与 numpy中的 sum( )的区别
一. python sum函数 描述: sum() 对序列进行求和 用法: sum(iterable[, start]) iterable:可迭代对象,例如,列表,元组,集合. start:指定相加的 ...
- 在PYTHON中使用StringIO的性能提升实测(更新list-join对比)
刚开始学习PYTHON,感觉到这个语言真的是很好用,可以快速完成功能实现. 最近试着用它完成工作中的一个任务:在Linux服务器中完成对.xml.gz文件的解析,生成.csv文件,以供SqlServe ...
- Python中NumPy基础使用
Python发展至今,已经有越来越多的人使用python进行科学技术,NumPY是python中的一款高性能科学计算和数据分析的基础包. ndarray ndarray(以下简称数组)是numpy的数 ...
- 【转】python 中NumPy和Pandas工具包中的函数使用笔记(方便自己查找)
二.常用库 1.NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组. 用于对整组数据进行快速运算的标准 ...
- python 中NumPy和Pandas工具包中的函数使用笔记(方便自己查找)
二.常用库 1.NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组. 用于对整组数据进行快速运算的标准 ...
随机推荐
- LLM应用实战:当图谱问答(KBQA)集成大模型(三)
1. 背景 最近比较忙(也有点茫),本qiang~想切入多模态大模型领域,所以一直在潜心研读中... 本次的更新内容主要是响应图谱问答集成LLM项目中反馈问题的优化总结,对KBQA集成LLM不熟悉的客 ...
- Kubernetes(K8s)之Pod
Pod介绍 Pod是K8s的最小调度单位 内部是一组Container容器,根容器Pause和其他业务容器 拥有唯一Pod IP 小贴士: 在生产环境中,极少单独Pod的情况 一般都是使用Deploy ...
- BigCodeBench: 继 HumanEval 之后的新一代代码生成测试基准
HumanEval 是一个用于评估大型语言模型 (LLM) 在代码生成任务中的参考基准,因为它使得对紧凑的函数级代码片段的评估变得容易.然而,关于其在评估 LLM 编程能力方面的有效性越来越多的担忧, ...
- 使用EF 连接 数据库 SQLserver、MySql 实现 CodeFirst
1.新建项目,下载Nuget安装包 创建项目需要注意几点,如果是基于 .net framework 的项目 需要选择 相应版本的 EF, 如果是跨平台则选择EF Core版本. 我这里选择的是 .ne ...
- 开发一个题库系统App和小程序的心得
序言 对于一名开发者来说,独自开发一款小程序与App,也许总会有一些疑问: 1. 需要掌握哪些技术? 答:java.vue.及常规Linux命令 2. 需要多少成本? 答:服务器购买,云服务器新人50 ...
- IDEA 设置自动去掉不用的import
- js 获取年、月、周、当前日期第几周、这月有那几周
查看当前日期是第几周:https://wannianli.tianqi.com/today/zhou/ //获取完整的日期 var date=new Date; var y = date.getFul ...
- 第二部分:关键技术领域的开源实践【内网穿透FRP】
FRP简介 FRP(Fast Reverse Proxy)作为一种高性能的内网穿透工具,支持 TCP.UDP.HTTP.HTTPS 等多种协议.可以将内网服务以安全.便捷的方式通过具有公网IP节点(云 ...
- el-config-provider
el-config-provider是Element Plus库中的一个组件,用于提供全局的配置.它是Element Plus在2.0版本中引入的新组件. el-config-provider组件的作 ...
- ProgressBar 进度控件
在 VB.NET 中,你可以使用 ProgressBar 控件或者自定义的进度提示方法来实现这个功能.以下是一个示例代码,展示如何使用 ProgressBar 控件来显示导入情况: ' 创建一个 Pr ...