python求零点_python – 计算大序列的过零点的结果不同
这个问题源于查看
this关于计算
zero crossings数量的问题的答案.提供了几个解决问题的答案,但NumPy
appproach在时间上摧毁了其他问题.
问题:为什么NumPy解决方案提供的结果与其他三种解决方案不同? (哪个是正确的?)
以下是计算过零次数的结果:
Blazing fast NumPy solution
total time: 0.303605794907 sec
Zero Crossings Small: 8
Zero Crossings Med: 54464
Zero Crossings Big: 5449071
Loop solution
total time: 15.6818780899 sec
Zero Crossings Small: 8
Zero Crossings Med: 44960
Zero Crossings Big: 4496847
Simple generator expression solution
total time: 16.3374049664 sec
Zero Crossings Small: 8
Zero Crossings Med: 44960
Zero Crossings Big: 4496847
Modified generator expression solution
total time: 13.6596589088 sec
Zero Crossings Small: 8
Zero Crossings Med: 44960
Zero Crossings Big: 4496847
用于获得结果的代码:
import time
import numpy as np
def zero_crossings_loop(sequence):
s = 0
for ind, _ in enumerate(sequence):
if ind+1 < len(sequence):
if sequence[ind]*sequence[ind+1] < 0:
s += 1
return s
def print_three_results(r1, r2, r3):
print 'Zero Crossings Small:', r1
print 'Zero Crossings Med:', r2
print 'Zero Crossings Big:', r3
print '\n'
small = [80.6, 120.8, -115.6, -76.1, 131.3, 105.1, 138.4, -81.3, -95.3, 89.2, -154.1, 121.4, -85.1, 96.8, 68.2]
med = np.random.randint(-10, 10, size=100000)
big = np.random.randint(-10, 10, size=10000000)
print 'Blazing fast NumPy solution'
tic = time.time()
z1 = (np.diff(np.sign(small)) != 0).sum()
z2 = (np.diff(np.sign(med)) != 0).sum()
z3 = (np.diff(np.sign(big)) != 0).sum()
print 'total time: {0} sec'.format(time.time()-tic)
print_three_results(z1, z2, z3)
print 'Loop solution'
tic = time.time()
z1 = zero_crossings_loop(small)
z2 = zero_crossings_loop(med)
z3 = zero_crossings_loop(big)
print 'total time: {0} sec'.format(time.time()-tic)
print_three_results(z1, z2, z3)
print 'Simple generator expression solution'
tic = time.time()
z1 = sum(1 for i, _ in enumerate(small) if (i+1 < len(small)) if small[i]*small[i+1] < 0)
z2 = sum(1 for i, _ in enumerate(med) if (i+1 < len(med)) if med[i]*med[i+1] < 0)
z3 = sum(1 for i, _ in enumerate(big) if (i+1 < len(big)) if big[i]*big[i+1] < 0)
print 'total time: {0} sec'.format(time.time()-tic)
print_three_results(z1, z2, z3)
print 'Modified generator expression solution'
tic = time.time()
z1 = sum(1 for i in xrange(1, len(small)) if small[i-1]*small[i] < 0)
z2 = sum(1 for i in xrange(1, len(med)) if med[i-1]*med[i] < 0)
z3 = sum(1 for i in xrange(1, len(big)) if big[i-1]*big[i] < 0)
print 'total time: {0} sec'.format(time.time()-tic)
print_three_results(z1, z2, z3)
python求零点_python – 计算大序列的过零点的结果不同相关推荐
- python文件关键行数_Python计算大文件行数方法及性能比较
如何使用Python快速高效地统计出大文件的总行数, 下面是一些实现方法和性能的比较. 1.readline读所有行 使用readlines方法读取所有行: def readline_count(fi ...
- 用python求兀_python求π
<像计算机科学家一样思考Python(第2版)>--2.5 操作顺序 本节书摘来自异步社区<像计算机科学家一样思考Python(第2版)>一书中的第2章,第2.5节,作者[美] ...
- python求乘积_Python实现求笛卡尔乘积的方法
Python实现求笛卡尔乘积的方法 本文实例讲述了Python实现求笛卡尔乘积的方法.分享给大家供大家参考,具体如下: 在数学中,两个集合X和Y的笛卡尓乘积(Cartesian product),又称 ...
- python求对数_python中取对数
技术 | Python从零开始系列连载(二十七) 我们接着上一期的Python,继续跟大家分享有关Python中常用的数值计算和正则表达式. 运算符 1)数值运算 +.-.*./ % (求余数) // ...
- python求积分_python 求定积分和不定积分示例
求f(x) = sin(x)/x 的不定积分和负无穷到正无穷的定积分 sin(x)/x 的不定积分是信号函数sig ,负无穷到正无穷的定积分为pi import math import numpy a ...
- python求圆面积_python如何求圆的面积
首先我们要知道圆的面积计算公式:S = πr²,公式中S为所求圆的面积,π为圆周率,r为圆的半径. 示例: # 定义一个方法来计算圆的面积 def findArea(r): PI = 3.142 re ...
- python求圆面积_python如何求圆的面积 python求圆的面积方法
python如何求圆的面积?本篇文章小编给大家分享一下python求圆的面积方法,代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 首先我们要知道圆的面积计算 ...
- python求乘积_Python实现求笛卡尔乘积方法详解
这篇文章主要介绍了Python实现求笛卡尔乘积的方法,结合实例形式分析了Python计算笛卡尔乘积的原理与实现技巧,需要的朋友可以参考下 本文实例讲述了Python实现求笛卡尔乘积的方法.分享给大家供 ...
- python算方差_python计算均值方差
用Python求均值与方差,可以自己写,也可以借助于numpy,不过到底哪个快一点呢? 我做了个实验,首先生成9百万个样本: nlist=range(0,9000000) nlist=[float(i ...
最新文章
- C# 加密解密(DES,3DES,MD5,Base64) 类
- torch.topk
- C++ Primer plus 第12章类和动态内存分配复习题参考答案
- C#操作MySQL数据库的简单例子
- No Fine-Tuning, Only Prefix-Tuning
- 蓝桥杯 ADV-205 算法提高 拿糖果
- thunderx 循环获得_柔性钠基双离子电池研究获得进展
- python3安装步骤-超详细的小白python3.X安装教程|Python安装
- Django框架基础之session
- encodeURI和uncodeURIComponent的介绍
- wms仓库管理系统具有四大功能
- excel选中指定行数
- 影响利率风险结构的因素_利率风险结构是什么意思 影响利率的因素
- MOOC慕课进入课程后无法刷新出视频、作业等界面
- Snapde和Excel、PowerPivot、WPS打开超大CSV文件性能比较
- [转贴]Debian的汉化步骤【转自http://www.linuxsir.org】
- 《沈剑架构师训练营》第6章 - 缓存架构
- 【一句日历】2019年3月
- VB动态加载纯DLL资源
- 什么是“ Windows Shell体验主机”,为什么在我的PC上运行?
热门文章
- 如何让二维码自适应浏览器的尺寸
- Flask基础知识总结
- python数据框循环生成_python - 如何在 Pandas 的for循环迭代中创建多个数据框?
- 王者荣耀8月15日服务器维护,王者荣耀8月15日更新维护到什么时候 王者荣耀8月15日更新时间分享...
- 论文浅尝 - COLING2020 | 一种用于跨语言实体对齐的上下文对齐强化跨图谱注意力网络...
- 论文浅尝 – KDD2020 | 使用图对比编码的图神经网络预训练模型
- 技术动态 | 针对复杂问题的知识图谱问答最新进展
- 一篇文章学习Python中的多进程
- 语言资源的类别、搜索与搭建策略
- nginx正向代理 反向代理