这个问题源于查看

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 – 计算大序列的过零点的结果不同相关推荐

  1. python文件关键行数_Python计算大文件行数方法及性能比较

    如何使用Python快速高效地统计出大文件的总行数, 下面是一些实现方法和性能的比较. 1.readline读所有行 使用readlines方法读取所有行: def readline_count(fi ...

  2. 用python求兀_python求π

    <像计算机科学家一样思考Python(第2版)>--2.5 操作顺序 本节书摘来自异步社区<像计算机科学家一样思考Python(第2版)>一书中的第2章,第2.5节,作者[美] ...

  3. python求乘积_Python实现求笛卡尔乘积的方法

    Python实现求笛卡尔乘积的方法 本文实例讲述了Python实现求笛卡尔乘积的方法.分享给大家供大家参考,具体如下: 在数学中,两个集合X和Y的笛卡尓乘积(Cartesian product),又称 ...

  4. python求对数_python中取对数

    技术 | Python从零开始系列连载(二十七) 我们接着上一期的Python,继续跟大家分享有关Python中常用的数值计算和正则表达式. 运算符 1)数值运算 +.-.*./ % (求余数) // ...

  5. python求积分_python 求定积分和不定积分示例

    求f(x) = sin(x)/x 的不定积分和负无穷到正无穷的定积分 sin(x)/x 的不定积分是信号函数sig ,负无穷到正无穷的定积分为pi import math import numpy a ...

  6. python求圆面积_python如何求圆的面积

    首先我们要知道圆的面积计算公式:S = πr²,公式中S为所求圆的面积,π为圆周率,r为圆的半径. 示例: # 定义一个方法来计算圆的面积 def findArea(r): PI = 3.142 re ...

  7. python求圆面积_python如何求圆的面积 python求圆的面积方法

    python如何求圆的面积?本篇文章小编给大家分享一下python求圆的面积方法,代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 首先我们要知道圆的面积计算 ...

  8. python求乘积_Python实现求笛卡尔乘积方法详解

    这篇文章主要介绍了Python实现求笛卡尔乘积的方法,结合实例形式分析了Python计算笛卡尔乘积的原理与实现技巧,需要的朋友可以参考下 本文实例讲述了Python实现求笛卡尔乘积的方法.分享给大家供 ...

  9. python算方差_python计算均值方差

    用Python求均值与方差,可以自己写,也可以借助于numpy,不过到底哪个快一点呢? 我做了个实验,首先生成9百万个样本: nlist=range(0,9000000) nlist=[float(i ...

最新文章

  1. C# 加密解密(DES,3DES,MD5,Base64) 类
  2. torch.topk
  3. C++ Primer plus 第12章类和动态内存分配复习题参考答案
  4. C#操作MySQL数据库的简单例子
  5. No Fine-Tuning, Only Prefix-Tuning
  6. 蓝桥杯 ADV-205 算法提高 拿糖果
  7. thunderx 循环获得_柔性钠基双离子电池研究获得进展
  8. python3安装步骤-超详细的小白python3.X安装教程|Python安装
  9. Django框架基础之session
  10. encodeURI和uncodeURIComponent的介绍
  11. wms仓库管理系统具有四大功能
  12. excel选中指定行数
  13. 影响利率风险结构的因素_利率风险结构是什么意思 影响利率的因素
  14. MOOC慕课进入课程后无法刷新出视频、作业等界面
  15. Snapde和Excel、PowerPivot、WPS打开超大CSV文件性能比较
  16. [转贴]Debian的汉化步骤【转自http://www.linuxsir.org】
  17. 《沈剑架构师训练营》第6章 - 缓存架构
  18. 【一句日历】2019年3月
  19. VB动态加载纯DLL资源
  20. 什么是“ Windows Shell体验主机”,为什么在我的PC上运行?

热门文章

  1. 如何让二维码自适应浏览器的尺寸
  2. Flask基础知识总结
  3. python数据框循环生成_python - 如何在 Pandas 的for循环迭代中创建多个数据框?
  4. 王者荣耀8月15日服务器维护,王者荣耀8月15日更新维护到什么时候 王者荣耀8月15日更新时间分享...
  5. 论文浅尝 - COLING2020 | 一种用于跨语言实体对齐的上下文对齐强化跨图谱注意力网络...
  6. 论文浅尝 – KDD2020 | 使用图对比编码的图神经网络预训练模型
  7. 技术动态 | 针对复杂问题的知识图谱问答最新进展
  8. 一篇文章学习Python中的多进程
  9. 语言资源的类别、搜索与搭建策略
  10. nginx正向代理 反向代理