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

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的方法比其他方法的速度快了至少一个量级,差别非常明显。

    推荐阅读
  • 卡卡退役后还会看足球吗(卡卡随基普乔格跑完柏林全马)

    在9月25日进行的2022柏林马拉松赛上,37岁的肯尼亚名将基普乔格以2小时1分9秒的成绩夺冠,并创造了全新的世界纪录。后半程,卡卡的速度有所下降,但最终以3小时38分06秒完赛的成绩,在业余马拉松选手中还是算相当不错的。而且,这次卡卡参加柏林马拉松也有为父亲打气、鼓劲的原因。2016年镇江马拉松,李铁又以1小时45分的成绩完成半马比赛。

  • 学校预防新冠肺炎防控知识(复课防控小知识)

    对其它地区返校师生要做好体温监测及症状筛查。高校应设置集中隔离医学观察区,对来自或经停湖北以及疫情高发地区的师生和被判定为密切接触者进行集中医学观察。要配合辖区疾病预防控制中心做好疑似或确诊病例的流行病学调查、密切接触者排查。在辖区疾病预防控制中心和中小学卫生保健科的工作人员指导下进行消毒。所使用消毒剂应在有效期内。

  • 按部就班造句(按部就班造句一年级)

    7、即使是您认为应该按部就班,直截了当的技术决策,也会有政治参杂其中,特别是您处于决定是否批准购买某企业工具的职位。

  • 15分钟快速退烧(我娃快速退烧)

    我娃快速退烧昨天晚上10点半才回家,刚回到家里,老人家就说,娃发烧了,我赶紧到房里看娃,发现他还在被窝里打冷战急忙用手探他额头,哇!挺烫的,问他哪里不舒服?头疼头晕发热发冷������,用探热针测出来事38.9℃。

  • 产后怎么缩阴效果好

    运动法阴道本身有一定的修复功能,产后出现的扩张现象在产后3个月即可恢复。产后妈妈可以通过一些锻炼来加强弹性的恢复,促进阴道紧实。练习骨盆运动女人半蹲,两膝微屈,两足分开60厘米左右,两手叉腰。吸气,将骨盆前推;呼气,将骨盆拉回,同时臀部尽量向后撅起。练习展腿运动女人运动躯干、大腿时,腹压作用于阴道,产生快感,同时阴道口开张,利于局部气血通畅。女人坐姿,两手后撑,左腿屈立,右腿屈膝外展,平放垫上。

  • 手机新浪微博怎么取消关注(手机新浪微博如何取消关注)

    以下内容希望对你有帮助!手机新浪微博怎么取消关注打开新浪微博手机客户端,点击页面底部“我”菜单,在展开的页面中,点击“关注”选项。打开微博账号当前关注的用户之后,点击“关注的人”菜单按钮。接下来,可以看到当前已经关注的用户,想要取消关注的话,点击“已关注”按钮,在弹出的对话框中,点击“确定”按钮即可。

  • 广州人口(广州的介绍)

    广州人口广州人口数量:1530.59万人。广州是首批国家历史文化名城,广府文化的发祥地,从秦朝开始一直是郡治、州治、府治的所在地,华南地区的政治、军事、经济、文化和科教中心。广州被全球权威机构GaWC评为世界一线城市,每年举办的中国进出口商品交易会吸引了大量客商以及大量外资企业、世界500强企业的投资,国家高新技术企业达8700多家,总量居全国前三,集结了全省80%的高校、70%的科技人员,在校大学生总量居全国第一。

  • 夏天的租房市场(北京租房夏理银)

    2012年2月,女儿参加“国考”被录取到了国家机关。7月,接通知到单位报到上班。也就是说,租户与房东并无直接联系。我们签订的租期为一年,中介先收一个月的房租即3600元为中介费,另外还要一次性地交付“押二付三”的费用。所谓“押二付三”,就是将两个月的房租作为押金,另预付三个月的房租。如果合同到期双方无什么纠纷时则押金退回。合同签订后我们和中介按合同上的内容对室内设施进行查看清点,完毕后中介将钥匙交付我们。

  • 麻酱秋葵的做法凉拌(简单版凉拌(麻酱秋葵的做法)

    以下内容大家不妨参考一二希望能帮到您!麻酱秋葵的做法凉拌原料:秋葵、橄榄油、盐、芝麻酱、大蒜。秋葵洗干净入煮锅焯水后捞出沥干水。大蒜碎放入碗中加盐。加橄榄油搅拌均匀成芝麻酱汁。秋葵放入盘中,添加芝麻酱汁,稍加搅拌即可享用。

  • 稍的拼音和组词(稍的拼音和组词是怎样的)

    稍的拼音和组词稍的拼音和组词:稍许、稍微、稍纵即逝、稍稍、稍麦、脱稍、手稍、稍地、花稍、枝稍、稍伯、秩稍、稍芟、稍房、稍子、稍麻寺、稍属、眼稍、稍杀、稍问、四稍、稍黩筐篚、稍安勿躁、稍倾、上稍、俸稍、稍麄胆壮、稍长胆壮、乡稍、稍迁、拉稍寺、头稍自领、竿稍、稍绿、稍挽稍、稍侵、饩稍、稍天、奉稍、没下稍。稍有shāo和shào两种读音。作shāo时本义为禾末,引申为略微。作shào时〔~息〕军事或体操的口令。