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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490324.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深度】全球机器人产业趋势及特征分析

来源&#xff1a;工业机器人前沿当前&#xff0c;全球机器人市场规模持续扩大&#xff0c;工业机器人市场增速回落&#xff0c;服务、特种机器人增速稳定。技术创新围绕仿生结构、人工智能和人机协作不断深入&#xff0c;产品在教育陪护、医疗康复、危险环境等领域的应用持续拓…

git commit --amend修改git commit提交的message

当git commit -m "message"提交之后&#xff0c;在push之前&#xff0c;发现git commit中的message有误&#xff0c;想把提交的message改过来&#xff0c;有什么办法&#xff1f; 首先输入git commit --amend命令&#xff0c;此时会打开一个vim窗口&#xff0c;里面…

为什么多个线程不可能同时抢到一把锁_并发基础理论:原子性问题、锁、管程...

我们再回顾一下&#xff0c;原子性问题的根源是CPU切换线程执行指令所导致的&#xff0c;当前一个对共享变量的操作没有完成之前&#xff0c;CPU又切换到另外一个线程来操作对应的共享变量&#xff0c;那么最终产生的结果就可能出现问题。比如如果现在有两个线程都在执行number…

继智能手机之后,增强现实如何再次改变我们与世界的交互方式

来源&#xff1a;资本实验室作为面向未来的新技术&#xff0c;增强现实和虚拟现实在过去几年中的发展可以用不温不火来形容。尽管创业投资和市场规模都在不断扩大&#xff0c;但硬件设备、数据传输速度、沉浸式体验效果、分辨率等因素都制约着该技术的快速发展&#xff0c;而大…

UVALive 6885 Flowery Trails 最短路枚举

题目连接&#xff1a; http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id129723 题意&#xff1a; 给你一个n点m图的边 1到n有多条最短路&#xff0c;问你所有经过的边的总和*2是多少 题解&#xff1a; 对1,n分别求单源最短路径上spfa 枚举某条边是否为最短上的…

git撤销git commit

git reset --soft HEAD^ 这样就成功的撤销了上一次的commit 注意&#xff0c;仅仅是撤回commit操作&#xff0c;写的代码仍然保留。 如果想要连着add也撤销的话&#xff0c;--soft改为--hard&#xff0c;但注意&#xff1a;这样会删除工作空间的改动过代码&#xff01;&…

简要说明建设城市大脑三条关键标准规范

作者&#xff1a;刘锋 前言&#xff1a;简要的说&#xff0c;城市大脑不是一个城市级AI信息系统&#xff0c;也不是城市内部的信息化建设&#xff0c;而是互联网结构从网状模型向大脑模型进化时&#xff0c;与城市建设结合的产物&#xff0c;因此建设城市大脑需要拥有三个特征…

python 连通区域_python skimage 连通性区域检测方法

python skimage 连通性区域检测方法涉及到的函数为import matplotlib.pyplot as pltfrom skimage import measure, colorlabels measure.label(img4[:,:,0], connectivity2)dst color.label2rgb(labels)plt.imshow(dst)labels为整个灰度图像的坐标的类别标签&#xff0c;值为…

git恢复删除前的版本

有时候我们想撤销上一次提交&#xff0c;于是执行git reset --soft HEAD^&#xff0c;这样就成功的删除了你上一次的commit。但有时候发现不小心撤销错了&#xff0c;想把刚刚的撤销给撤回&#xff1a; 方法&#xff1a;首先执行git reflog 这时会显示刚刚各个操作&#xff0…

NLP模型超越人类水平?你可能碰到了大忽悠

大数据文摘出品来源&#xff1a;thegradient编译&#xff1a;张睿毅、武帅、钱天培一个军方训练的神经网络声称可以分类图像中的坦克&#xff0c;但实际上&#xff0c;它只是学会了识别不同的亮度&#xff0c;因为一种类型的坦克仅出现在明亮的图片中&#xff0c;而另一种类型仅…

JavaScript跳转到页面某个锚点#

JavaScript跳转到页面某个锚点&#xff1a; scroll(0, document.getElementById(锚点ID).offsetTop); 转载于:https://www.cnblogs.com/52php/p/5677836.html

伸缩杆怎么缩回去图解_没有阳台怎么晾衣服?这10个神器,让家里衣物晾晒更轻松方便...

没有阳台怎么晾衣服&#xff1f;这10个神器&#xff0c;让家里衣物晾晒更轻松方便&#xff01;衣物晾晒是居家生活的必要环节&#xff0c;每个家庭在洗完衣物后都有自己的晾晒方式&#xff0c;但多数家庭会选择在阳台里进行。然而&#xff0c;对于没有阳台的家庭来说&#xff0…

小脑过度活跃,会引起整个大脑的问题

来源&#xff1a;中国生物技术网 9月10日&#xff0c;发表在《Cell Reports》的一项研究中&#xff0c;来自日本京都大学的研究团队发现小脑中的免疫活性诱导动物的神经元过度兴奋&#xff0c;干扰了精神运动行为。位于颅骨下背部的小脑&#xff0c;在调节诸如平衡、运动学习和…

Kubernetes(K8S)快速入门

概述 在本门课程中&#xff0c;我们将会学习K8S一些非常重要和核心概念&#xff0c;已经操作这些核心概念对应组件的相关命令和方式。比如Deploy部署&#xff0c;Pod容器&#xff0c;调度器&#xff0c;Service服务&#xff0c;Node集群节点&#xff0c;Helm包管理器等等。 在…

TLB简介

TLB - translation lookaside buffer 快表&#xff0c;直译为旁路快表缓冲&#xff0c;也可以理解为页表缓冲&#xff0c;地址变换高速缓存。 由于页表存放在主存中&#xff0c;因此程序每次访存至少需要两次&#xff1a;一次访存获取物理地址&#xff0c;第二次访存才获得数…

python matplotlib数据可视化_Python - matplotlib 数据可视化

2 图和子图的建立2.1 导入matplotlibimport matplotlib.pyplot as pltimport numpy as np2.2 建立图和子图方式一plt.plot( )会在最近的一个图上进行绘制from numpy.random import randnfig plt.figure(figsize (8,4)) #设置图的大小ax1 fig.add_subplot(2,2,1)ax2 fig.…

学会怎样使用Jsp 内置标签、jstl标签库及自定义标签

学习jsp不得不学习jsp标签&#xff0c;一般来说&#xff0c;对于一个jsp开发者&#xff0c;可以理解为jsp页面中出现的java代码越少&#xff0c;对jsp的掌握就越好&#xff0c;而替换掉java代码的重要方式就是使用jsp标签。 jsp标签的分类&#xff1a;1&#xff09;内置标签&am…

没有精准定位,万物还能实现互联吗?

来源&#xff1a;CSDN万物皆备&#xff0c;静待互联。这是一个万物都被赋予「生命」的时代&#xff0c;从人工流水线到工业自动化&#xff1b;从相互独立的设备到实时可监测相连的家居智能化&#xff1b;从汽车的复杂操作到自动驾驶的无人化......探索其真谛&#xff0c;实则科…

IO密集型 CPU密集型 多线程 多进程

IO密集型可以多线程。比如有一个任务&#xff0c;执行10万次循环&#xff0c;每次都打印hello world&#xff0c;然后休眠1秒&#xff0c;如果单线程&#xff0c;需要10万秒完成&#xff0c;如果10个线程&#xff0c;就只需要1万秒。 CPU密集型尽量少点线程。还是上面那个任务…

python selenium模拟键盘_SELENIUM自动化模拟键盘快捷键操作实现解析

这篇文章主要介绍了SELENIUM自动化模拟键盘快捷键操作实现解析,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下平常我们会用到很多快捷键&#xff0c;那么selenium如何来模拟快捷键操作呢。下面看看下常用快捷键…