成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

NumPy與Python內(nèi)置列表計(jì)算標(biāo)準(zhǔn)差區(qū)別詳析

89542767 / 551人閱讀


  小編寫(xiě)這篇文章的主要目的,主要是給大家進(jìn)行介紹,關(guān)于NumPy與Python內(nèi)置列表計(jì)算標(biāo)準(zhǔn)差區(qū)別的相關(guān)介紹,希望可以給各位讀者帶來(lái)幫助。


  1什么是Numpy


    NumPy,是NumericalPython的通稱,用以性能卓越計(jì)算機(jī)的應(yīng)用和數(shù)據(jù)統(tǒng)計(jì)分析的前提包,像數(shù)理科學(xué)專用工具(pandas)和架構(gòu)(Scikit-learn)中都采用上了NumPy這個(gè)包。


  NumPy中的基本數(shù)據(jù)結(jié)構(gòu)是ndarray或者N維數(shù)值數(shù)組,在形式上來(lái)說(shuō),它的結(jié)構(gòu)有點(diǎn)像Python的基礎(chǔ)類型——Python列表。


  但本質(zhì)上,這兩者并不同,可以看到一個(gè)簡(jiǎn)單的對(duì)比。


  我們創(chuàng)建兩個(gè)列表,當(dāng)我們創(chuàng)建好了之后,可以使用+運(yùn)算符進(jìn)行連接:


  list1=[i for i in range(1,11)]
  list2=[i**2 for i in range(1,11)]
  print(list1+list2)
  #[1,2,3,4,5,6,7,8,9,10,1,4,9,16,25,36,49,64,81,100]


  列表中元素的處理感覺(jué)像對(duì)象,不是很數(shù)字,不是嗎?如果這些是數(shù)字向量而不是簡(jiǎn)單的數(shù)字列表,您會(huì)期望+運(yùn)算符的行為略有不同,并將第一個(gè)列表中的數(shù)字按元素添加到第二個(gè)列表中的相應(yīng)數(shù)字中。


  接下來(lái)看一下Nympy的數(shù)組版本:


  import numpy as np
  arr1=np.array(list1)
  arr2=np.array(list2)
  arr1+arr2
  #array([2,6,12,20,30,42,56,72,90,110])


  通過(guò)numpy的np.array數(shù)組方法實(shí)現(xiàn)了兩個(gè)列表內(nèi)的逐個(gè)值進(jìn)行相加。


  我們通過(guò)dir函數(shù)來(lái)看兩者的區(qū)別,先看Python內(nèi)置列表list1的內(nèi)置方法:

0.png

  再用同樣的方法看一下arr1中的方法:

1.png

  NumPy數(shù)組對(duì)象還有更多可用的函數(shù)和屬性。特別要注意諸如mean、std和sum之類的方法,因?yàn)樗鼈兦宄乇砻髦攸c(diǎn)關(guān)注使用這種數(shù)組對(duì)象的數(shù)值/統(tǒng)計(jì)計(jì)算。而且這些操作也很快。


  2 NumPy數(shù)組和Python內(nèi)置計(jì)算對(duì)比


      NumPy的速率要快得多,是因?yàn)樗氖噶炕瓿杉捌渌脑S許多多核心內(nèi)容方法是最早用C語(yǔ)言(根據(jù)CPython框架結(jié)構(gòu))撰寫(xiě)的。NumPy字符數(shù)組是相同架構(gòu)類別的密集排列的字符數(shù)組。比較之下,Python文件列表是偏向主體的數(shù)組指針,即便這些都是屬于同一個(gè)類別。


      因而,大家獲得了參考資料局部性性的好處。


     許許多多NumPy實(shí)際操作需要用C語(yǔ)言達(dá)到的,防止了Python當(dāng)中的循環(huán)系統(tǒng)、表針間接地和逐設(shè)計(jì)元素動(dòng)態(tài)類型檢查的項(xiàng)目一般來(lái)說(shuō)生產(chǎn)成本。


     尤其是,速率的提升取決于您正在執(zhí)行的操作。對(duì)于數(shù)據(jù)科學(xué)和ML任務(wù),這是一個(gè)無(wú)價(jià)的優(yōu)勢(shì),因?yàn)樗乐沽碎L(zhǎng)和多維數(shù)組當(dāng)中的循環(huán)系統(tǒng)。


    讓我們使用timing計(jì)時(shí)裝飾器來(lái)說(shuō)明這一點(diǎn)。這是一個(gè)圍繞兩個(gè)函數(shù)std_dev和std_dev_python包裝裝飾器的代碼,分別使用NumPy和本機(jī)Python代碼實(shí)現(xiàn)文件列表/字符數(shù)組的標(biāo)準(zhǔn)差計(jì)算。


  3函數(shù)計(jì)算時(shí)間裝飾器


  我們可以使用Python裝飾器和functools模塊的wrapping來(lái)寫(xiě)一個(gè)時(shí)間裝飾器timing:


  def timing(func):
   wraps(func)
  def wrap(*args,**kw):
  begin_time=time()
  result=func(*args,**kw)
  end_time=time()
  print(f"Function'{func.__name__}'took{end_time-begin_time}seconds to run")
  return result
  return wrap


  4標(biāo)準(zhǔn)差計(jì)算公式


  然后利用這個(gè)時(shí)間裝飾器來(lái)看Numpy數(shù)組和Python內(nèi)置的列表,然后計(jì)算他們的標(biāo)準(zhǔn)差,


  公式如圖:

2.png

  定義Numpy計(jì)算標(biāo)準(zhǔn)差的函數(shù)std_dev(),numpy模塊中內(nèi)置了標(biāo)準(zhǔn)差公式的函數(shù)a.std(),我們可以直接調(diào)用


  列表計(jì)算公式方法需要按照公式一步一步計(jì)算:


  先求求出宗和s


  然后求出平均值average


  計(jì)算每個(gè)數(shù)值與平均值的差的平方,再求和sumsq


  再求出sumsq的平均值sumsq_average


  得到最終的標(biāo)準(zhǔn)差結(jié)果result


  代碼如下:


  from functools import wraps
  from time import time
  import numpy as np
  from math import sqrt
  def timing(func):
   wraps(func)
  def wrap(*args,**kw):
  begin_time=time()
  result=func(*args,**kw)
  end_time=time()
  #print(f"Function'{func.__name__}'with arguments{args},keywords{kw}took{end_time-begin_time}seconds to run")
  print(f"Function'{func.__name__}'took{end_time-begin_time}seconds to run")
  return result
  return wrap
   timing
  def std_dev(a):
  if isinstance(a,list):
  a=np.array(a)
  s=a.std()
  return s
   timing
  def std_dev_python(lst):
  length=len(lst)
  s=sum(lst)
  average=s/length
  sumsq=0
  for i in lst:
  sumsq+=(i-average)**2
  sumsq_average=sumsq/length
  result=sqrt(sumsq_average)
  return result

  運(yùn)行結(jié)果,最終可以看到1000000個(gè)值得標(biāo)準(zhǔn)差的值為288675.13459,而Numpy計(jì)算時(shí)間為0.0080 s,而Python原生計(jì)算方式為0.2499 s:


  由此可見(jiàn),Numpy的方式明顯更快。


  NumPy是專門(mén)針對(duì)數(shù)組的操作和運(yùn)算進(jìn)行了設(shè)計(jì),所以數(shù)組的存儲(chǔ)效率和輸入輸出性能遠(yuǎn)優(yōu)于Python中的嵌套列表,數(shù)組越大,NumPy的優(yōu)勢(shì)就越明顯。


  到此為止,小編給大家介紹的這篇文章,就為大家介紹到這里了,希望可以為各位讀者帶來(lái)幫助。


文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/127778.html

相關(guān)文章

  • NumPyPython內(nèi)置列表計(jì)算標(biāo)準(zhǔn)區(qū)別解析

      小編寫(xiě)這篇文章的目的,主要是給大家來(lái)做一個(gè)比較詳細(xì)的解答,解答一下其具體的相關(guān)知識(shí),還有一些相關(guān)的代碼解析,下面就給大家進(jìn)行一個(gè)比較詳細(xì)的解答?! ∈裁词荖umpy  NumPy,是Numerical Python的簡(jiǎn)稱,用于性能比較高的基礎(chǔ)分析數(shù)據(jù)包,可以對(duì)其進(jìn)行用來(lái)進(jìn)行數(shù)據(jù)分析,像數(shù)學(xué)科學(xué)工具(pandas)和框架(Scikit-learn)中都使用到了NumPy這個(gè)包?! umPy中的...

    89542767 評(píng)論0 收藏0
  • 真假美猴王-Numpy數(shù)據(jù)Python數(shù)組的區(qū)別聯(lián)系

    摘要:下文統(tǒng)一稱為數(shù)組是存儲(chǔ)單一數(shù)據(jù)類型的多維數(shù)組同語(yǔ)言數(shù)組直接保存數(shù)值而則是能夠?qū)?shù)組進(jìn)行處理的函數(shù)。動(dòng)態(tài)數(shù)據(jù)類型與的數(shù)組和的這些不可變數(shù)據(jù)類型的適用場(chǎng)景等可變數(shù)據(jù)類型適用于需要不斷對(duì)原始數(shù)據(jù)進(jìn)行修改的場(chǎng)景。 showImg(https://segmentfault.com/img/remote/1460000018925396);Numpy,是python中的一個(gè)矩陣計(jì)算包,功能類似ma...

    鄒強(qiáng) 評(píng)論0 收藏0
  • Numpy中的通用函數(shù)和聚合

    摘要:概述在中存在著通用函數(shù)和聚合去對(duì)數(shù)據(jù)進(jìn)行處理通過(guò)向量進(jìn)行對(duì)數(shù)據(jù)數(shù)組的計(jì)算而這些向量主要依靠一些通用函數(shù)而聚合是對(duì)面對(duì)大量數(shù)據(jù)時(shí)獲取描述性統(tǒng)計(jì)信息的方法。三角函數(shù)提供了大量好用的通用函數(shù),其中對(duì)于數(shù)據(jù)科學(xué)家最有用的就是三角函數(shù)。 showImg(https://segmentfault.com/img/remote/1460000018925263); 概述 在Numpy中存在著通用函數(shù)...

    xorpay 評(píng)論0 收藏0
  • Python | Numpy:詳解計(jì)算矩陣的均值和標(biāo)準(zhǔn)

    摘要:一前言權(quán)重法是一種比熵權(quán)法和標(biāo)準(zhǔn)離差法更好的客觀賦權(quán)法它是基于評(píng)價(jià)指標(biāo)的對(duì)比強(qiáng)度和指標(biāo)之間的沖突性來(lái)綜合衡量指標(biāo)的客觀權(quán)重。對(duì)比強(qiáng)度是指同一個(gè)指標(biāo)各個(gè)評(píng)價(jià)方案之間取值差距的大小,以標(biāo)準(zhǔn)差的形式來(lái)表現(xiàn)。 ...

    LeanCloud 評(píng)論0 收藏0
  • 科學(xué)計(jì)算數(shù)據(jù)可視化1

    摘要:科學(xué)計(jì)算與數(shù)據(jù)可視化程序設(shè)計(jì)模塊最重要的一個(gè)特點(diǎn)就是其維數(shù)組對(duì)象即該對(duì)象是一個(gè)快速而靈活的大數(shù)據(jù)集容器。兩行及以上為二維表示數(shù)組各維度大小的元組。 科學(xué)計(jì)算與數(shù)據(jù)可視化1 @(程序設(shè)計(jì)) numpy模塊 Numpy最重要的一個(gè)特點(diǎn)就是其N維數(shù)組對(duì)象(即ndarray)該對(duì)象是一個(gè)快速而靈活的大數(shù)據(jù)集容器。 使用Numpy,開(kāi)發(fā)人員可以執(zhí)行以下操作: 1、數(shù)組的算數(shù)和邏輯運(yùn)算。 2、...

    aervon 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<