在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, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组. 用于对整组数据进行快速运算的标准 ...
随机推荐
- PowerBI_一分钟了解POWERBI计算组功能及作用(第一部分)
1: X-mind&计算组(CALCULATION GROUP)介绍 1.1 什么是计算组 PowerBI的计算组功能可以显著减少必须创建的冗余度量值数,通过允许将DAX表达式定义为应用于模型 ...
- Ajax分析方法
Ajax 分析方法 以前面的微博为例,拖动刷新的内容由 Ajax 加载,而且页面的 URL 没有变化,那么应该到哪里去查看这些 Ajax 请求呢? 查看请求 需要借助浏览器的开发者工具,下面以 Chr ...
- tampermonkey脚本 百度搜索屏蔽CSDN
// ==UserScript==// @name 屏蔽CSDN// @namespace http://tampermonkey.net/// @version 20 ...
- TrustZone与高通
改编自:https://blog.csdn.net/guyongqiangx/article/details/78020257 介绍 导读 Q:什么是Trust Zone A:Trust Zone:是 ...
- 基于 Linux 2.6的 硬中断 / 软中断的原理以及实现
Author:zhangskd @ csdn blog 概述 从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器. 如果中断的线是激活的,中断控制 ...
- NXP i.MX 8M Mini开发板规格书(四核ARM Cortex-A53 + 单核ARM Cortex-M4,主频1.6GHz)
1 评估板简介 创龙科技TLIMX8-EVM是一款基于NXP i.MX 8M Mini的四核ARM Cortex-A53 + 单核ARM Cortex-M4异构多核处理器设计的高性能评估板,由核心板和 ...
- Qt中全局变量的定义和使用
全局变量的定义 现在需要将自定义的STRParameter变量定义为全局变量,就需要新建两个文件,分别命名为"global.h"和"global.cpp" 在g ...
- Centos7安装nacos详细步骤(配置开机自启)
Nacos 解压文件 创建数据库nacos,导入nacos的sql文件 创建数据库nacos,导入nacos的sql文件 修改启动文件(根据系统选择) [root@localhost bin]# cd ...
- GCC8 编译优化 BUG 导致的内存泄漏
1. 背景 1.1. 接手老系统 最近我们又接手了一套老系统,老系统的迭代效率和稳定性较差,我们打算做重构改造,但重构周期较长,在改造完成之前还有大量的需求迭代.因此我们打算先从稳定性和迭代效率出发做 ...
- IDEA社区版新建一个最简单的Spring工程(Spring框架搭建 01)
创建Spring项目 IDEA打开New Project-Maven Archetype,选择Archetype:org.apache.maven.archetypes:maven-archetype ...