科百科
当前位置: 首页 科技资讯

python进阶之numpy快速入门(python技巧-Numpy计算速度到底有多快)

时间:2023-06-01 作者: 小编 阅读量: 1 栏目名: 科技资讯

python进阶之numpy快速入门?Numpy和python内置的数学运算方法相比,到底有多快?Numpy数组采用相同的类型并压缩保存,而python的一般列表采用的是一组指向对象的指针的数组,即使类型相同的列表也是如此,这样做在本地引用方面有好处。除了这种差别之外,许多Numpy运算是用C语言编写的,避免了在Python中的循环成本、间接使用指针以及检查每个动态元素的类型,这样在实施计算是就可以大幅度提高运算速度。

python进阶之numpy快速入门?Numpy和python内置的数学运算方法相比,到底有多快?,下面我们就来聊聊关于python进阶之numpy快速入门?接下来我们就一起去了解一下吧!

python进阶之numpy快速入门

Numpy和python内置的数学运算方法相比,到底有多快?!

本文用一个包含1百万个浮点随机数的列表、对其求log10的对数并把结果保存为新的列表为例,分别使用for循环计算和Numpy 的对数计算函数进行结算,看看Numpy在数值计算方面的优势。

众所周知,numpy之所以计算速度快是因为使用了向量方法处理数据以及其方法内核都是用C语言编写(基于CPython框架)而成。

Numpy数组采用相同的类型并压缩保存,而python的一般列表采用的是一组指向对象的指针的数组,即使类型相同的列表也是如此,这样做在本地引用方面有好处。除了这种差别之外,许多Numpy运算是用C语言编写的,避免了在Python中的循环成本、间接使用指针以及检查每个动态元素的类型,这样在实施计算是就可以大幅度提高运算速度。

在实践中这一优势并不能充分发挥出来,因为通常遇到的数据集一般也就几百万条数据,很少有几十亿条记录的数据集。

(笔者此前还写过一篇文章:使用Numpy进行数值计算的神速度)

导入必要的工具包

import numpy as npfrom math import log10 as lg10import timeimport matplotlib.pyplot as pltimport random%matplotlib inline# 要处理的数据数量 和 保存运算速度的列表N = 1000000 #speed = [] #保存运算耗费的时间

数据准备

# 创建一个列表,其元素为1百万个随机浮点数l1 = list(100*(np.random.random(N)) 1)print("列表 l1 的长度:",len(l1))# 列表l1的长度: 1000000print("随机浮点数实例:", l1[:3])

随机浮点数实例如下:

随机浮点数实例: [13.870198558125312, 98.30583303631951, 62.793947122478635]

根据列表 l1 创建 Numpy 数组对象,即把列表 l1 向量化

a1 = np.array(l1)print(" a1 的构型 :",a1.shape)print(" a1 的类型:",type(a1))

a1 的构型 : (1000000,)a1 的类型: <class 'numpy.ndarray'>

创建一个空列表 l2,以便追加元素,

l2=[]

使用for循环追加元素的速度

t1=time.time()for item in l1:l2.append(lg10(item))t2 = time.time()print("用for循环追加元素耗时: {} seconds".format(t2-t1))speed.append(t2-t1)

用for循环追加元素耗时: 0.2657289505004883 秒

使用列表的相关方法追加元素的速度

t1=time.time()l2 = [lg10(i) for i in range(1,1000001)]t2 = time.time()print("使用列表的相关方法追加元素,耗时{} 秒".format(t2-t1))speed.append(t2-t1)

使用列表的相关方法追加元素,耗时0.13235092163085938 秒

使用 map() 方法追加元素的速度

def op1(x):return (lg10(x))t1=time.time()l2=list(map(op1,l1))t2 = time.time()print("使用map()函数追加元素,耗时 {} 秒 ".format(t2-t1))speed.append(t2-t1)

使用map()函数追加元素,耗时 0.21657609939575195 秒

使用 Numpy 的计算方法追加元素的速度,即用向量数组

t1=time.time()a2=np.log10(a1)t2 = time.time()print("直接使用Numpy的求对数方法log10,耗时 {} 秒".format(t2-t1))speed.append(t2-t1)

直接使用Numpy的求对数方法log10,耗时 0.011036396026611328 秒

把 a2 转换为 列表 l3,

l3 = list(a2)

以上四种运算方法耗时,for循环方法约为0.265秒、列表的相关方法耗时约为0.132秒、map()方法耗时约为0.216,Numpy 的方法耗时约为0.011,可以看出,Numpy的方法比其他方法的速度快了至少一个量级,差别非常明显。

    推荐阅读
  • 骨膜炎一运动就肿胀什么原因(节后报复性运动)

    除此之外,胫骨骨膜炎还与运动方法,运动场地、运动后放松有关,如果长期运动姿势不正确,运动场地过硬,运动后未及时放松,均会导致骨膜炎。骨膜炎多为逐渐发病,早期症状不明显,胫骨中下1/3内侧缘及前骨面疼痛,且多为隐痛或牵扯痛。

  • 2020上海东湖美食节时间+地点+交通 上海美食节2020时间表

    第六届东湖美食节活动时间:即日起至2020年10月8日活动地点:虹桥迎宾馆等活动详情:本届美食节为弘扬东湖集团餐饮美食注重色、香、味的同时,更加注重的是食品卫生和食材健康,因此,本届“东湖味道食之有道”美食节的主题为——“食之安、材之健”。在为期42天的美食节活动期间,东湖餐饮研究会将首次举办大师宴推介仪式。金秋时节,带着你的味蕾,一起来品尝东湖盛宴吧!

  • 感动的话语给老公(写给老公的暖心句子)

    老公,你辛苦了,不要太熬夜,注意身体。假如可以的话,我愿意花去生命中的每一分每一秒陪着你。我们心同相知,天涯海角共此时,明月似我心,此情久久!虽然我还没有见到过哪对恋人可以不吵架,但是我尽量,不会蛮不讲理。就算我们吵架了,答应我,不要轻易说分手。因为有些话说出了是收不回的,有些裂痕就算愈合了,还是会有伤疤的。我不在意你一无所有,只要你足够爱我。

  • 调饺子馅的秘方(调饺子馅有什么秘方)

    调饺子馅的秘方?接下来我们就一起去研究一下吧!调饺子馅的秘方食材:虾仁500克,草鱼肉150克,少许盐,姜末。如果家中有搅拌机,可直接放入搅拌机搅拌,同时有冰块加入更好,可以让鱼肉鲜嫩中有嚼头。虾仁去线,直接用刀面压住,一碾,虾泥就出来了,加入适量姜末。虾仁和鱼胶按3∶1的比例放入盆中,加一小匙盐,搅拌均匀。虾仁饺子包好后,水开锅后过一分钟后就可以捞起,放入碗中后撒上一点切好的香菜或时蔬。

  • 宝宝嘴里有小白点是什么(快看看宝宝嘴里有没有小白点)

    鹅口疮是由白色念珠菌引起的,常见于婴幼儿及新生儿,大多是喂养过程中清洁不到位所致。鹅口疮长得跟宝宝口腔内的奶渍比较相似,但奶渍比较容易擦除,可以凭此区分。得了鹅口疮的宝宝吞咽时可能会有疼痛反应,从而影响进食。如果宝宝嘴里有鹅口疮,不要用力擦拭感染处会损伤口腔黏膜、出血,如果不影响精神和食欲可以先观察,严重的话建议就医。

  • 大浪淘沙下一句是什么(大浪淘沙下一句简述)

    大浪淘沙沉者为金,风卷残云胜者为王,下面我们就来说一说关于大浪淘沙下一句是什么?我们一起去了解并探讨一下这个问题吧!“大浪淘沙”是句成语,比喻在激烈的斗争中经受考验、筛选而留真正的有价值的东西。并没有上下句,出自粟裕《激流归大海》:这支队伍经过严峻的锻炼和考验,质量更高了,是大浪淘沙保留下来的精华。

  • icloud开放平台(iCloud.com现在支持iOSAndroid原生浏览器了)

    icloud开放平台日前,苹果为其iCloud.com网站进行更新,现已适用于iOS和Android移动浏览器。尽管苹果并没有对外宣布这次iCloud.com更新,但这次「不起眼」的体验升级还是得到了关注与肯定。根据外媒测试反馈,包括查找iPhone在内的其它功能,目前都可如预期运行。在此之前,用户们只能通过请求完整的桌面站点在移动浏览器上访问。而现在对于只有一部Android备用机,偶尔需要通过iCloud.com来定位iPhone的用户来说,这确实是一次实用的更新。

  • 宝宝混合喂养的注意事项(关于宝宝混合喂养的注意事项)

    做好奶具的消毒工作由于奶粉等奶类代乳品易繁殖细菌,容易变质,从而引起消化不良所以首先要搞好奶具消毒和其他乳品的保存,平时要把消毒的奶具保存好,我来为大家科普一下关于宝宝混合喂养的注意事项?由于奶粉等奶类代乳品易繁殖细菌,容易变质,从而引起消化不良。配奶时要注意卫生。妈妈不要轻易更换奶粉,不然容易导致宝宝厌食情况的出现。当然奶粉的增加量还是要以宝宝月龄、母乳缺少程度具体情况具体操作。

  • 终于拿到驾驶证,实习期上高速须注意这些!

    蜀黍提示机动车驾驶人初次申领机动车驾驶证和增加准驾车型后的12个月为实习期。往下看↓↓↓实习期可以上高速《机动车驾驶证申领和使用规定》规定:驾驶人在实习期内驾驶机动车上高速公路行驶,应当由持相应或者更高准驾车型驾驶证三年以上的驾驶人陪同。04实习期要粘贴实习标志依据《机动车驾驶证申领和使用规定》第六十四条规定:在实习期内驾驶机动车的,应当在车身后部粘贴或者悬挂统一样式的实习标志。

  • 诙谐幽默搞笑句子(幽默搞笑的俏皮话)

    “虽然我有手有脚,但是我没钱啊。”13、其实所有的旅行攻略都没必要看,浓缩成四个字就是:多带点钱。