国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

NumPy與Python內置列表計算標準差區別詳析

89542767 / 524人閱讀


  小編寫這篇文章的主要目的,主要是給大家進行介紹,關于NumPy與Python內置列表計算標準差區別的相關介紹,希望可以給各位讀者帶來幫助。


  1什么是Numpy


    NumPy,是NumericalPython的通稱,用以性能卓越計算機的應用和數據統計分析的前提包,像數理科學專用工具(pandas)和架構(Scikit-learn)中都采用上了NumPy這個包。


  NumPy中的基本數據結構是ndarray或者N維數值數組,在形式上來說,它的結構有點像Python的基礎類型——Python列表。


  但本質上,這兩者并不同,可以看到一個簡單的對比。


  我們創建兩個列表,當我們創建好了之后,可以使用+運算符進行連接:


  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]


  列表中元素的處理感覺像對象,不是很數字,不是嗎?如果這些是數字向量而不是簡單的數字列表,您會期望+運算符的行為略有不同,并將第一個列表中的數字按元素添加到第二個列表中的相應數字中。


  接下來看一下Nympy的數組版本:


  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])


  通過numpy的np.array數組方法實現了兩個列表內的逐個值進行相加。


  我們通過dir函數來看兩者的區別,先看Python內置列表list1的內置方法:

0.png

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

1.png

  NumPy數組對象還有更多可用的函數和屬性。特別要注意諸如mean、std和sum之類的方法,因為它們清楚地表明重點關注使用這種數組對象的數值/統計計算。而且這些操作也很快。


  2 NumPy數組和Python內置計算對比


      NumPy的速率要快得多,是因為它的矢量化完成及其他的許許多多核心內容方法是最早用C語言(根據CPython框架結構)撰寫的。NumPy字符數組是相同架構類別的密集排列的字符數組。比較之下,Python文件列表是偏向主體的數組指針,即便這些都是屬于同一個類別。


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


     許許多多NumPy實際操作需要用C語言達到的,防止了Python當中的循環系統、表針間接地和逐設計元素動態類型檢查的項目一般來說生產成本。


     尤其是,速率的提升取決于您正在執行的操作。對于數據科學和ML任務,這是一個無價的優勢,因為它防止了長和多維數組當中的循環系統。


    讓我們使用timing計時裝飾器來說明這一點。這是一個圍繞兩個函數std_dev和std_dev_python包裝裝飾器的代碼,分別使用NumPy和本機Python代碼實現文件列表/字符數組的標準差計算。


  3函數計算時間裝飾器


  我們可以使用Python裝飾器和functools模塊的wrapping來寫一個時間裝飾器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標準差計算公式


  然后利用這個時間裝飾器來看Numpy數組和Python內置的列表,然后計算他們的標準差,


  公式如圖:

2.png

  定義Numpy計算標準差的函數std_dev(),numpy模塊中內置了標準差公式的函數a.std(),我們可以直接調用


  列表計算公式方法需要按照公式一步一步計算:


  先求求出宗和s


  然后求出平均值average


  計算每個數值與平均值的差的平方,再求和sumsq


  再求出sumsq的平均值sumsq_average


  得到最終的標準差結果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

  運行結果,最終可以看到1000000個值得標準差的值為288675.13459,而Numpy計算時間為0.0080 s,而Python原生計算方式為0.2499 s:


  由此可見,Numpy的方式明顯更快。


  NumPy是專門針對數組的操作和運算進行了設計,所以數組的存儲效率和輸入輸出性能遠優于Python中的嵌套列表,數組越大,NumPy的優勢就越明顯。


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


文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/127778.html

相關文章

  • NumPyPython內置列表計算標準區別解析

      小編寫這篇文章的目的,主要是給大家來做一個比較詳細的解答,解答一下其具體的相關知識,還有一些相關的代碼解析,下面就給大家進行一個比較詳細的解答。  什么是Numpy  NumPy,是Numerical Python的簡稱,用于性能比較高的基礎分析數據包,可以對其進行用來進行數據分析,像數學科學工具(pandas)和框架(Scikit-learn)中都使用到了NumPy這個包。  NumPy中的...

    89542767 評論0 收藏0
  • 真假美猴王-Numpy數據Python數組的區別聯系

    摘要:下文統一稱為數組是存儲單一數據類型的多維數組同語言數組直接保存數值而則是能夠對數組進行處理的函數。動態數據類型與的數組和的這些不可變數據類型的適用場景等可變數據類型適用于需要不斷對原始數據進行修改的場景。 showImg(https://segmentfault.com/img/remote/1460000018925396);Numpy,是python中的一個矩陣計算包,功能類似ma...

    鄒強 評論0 收藏0
  • Numpy中的通用函數和聚合

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

    xorpay 評論0 收藏0
  • Python | Numpy:詳解計算矩陣的均值和標準

    摘要:一前言權重法是一種比熵權法和標準離差法更好的客觀賦權法它是基于評價指標的對比強度和指標之間的沖突性來綜合衡量指標的客觀權重。對比強度是指同一個指標各個評價方案之間取值差距的大小,以標準差的形式來表現。 ...

    LeanCloud 評論0 收藏0
  • 科學計算數據可視化1

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

    aervon 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<