中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
python用于數(shù)學(xué)計(jì)算的工具介紹:scipy和numpy

這個(gè)教程是為了幫助初學(xué)者掌握scipy并且肯能快地實(shí)際使用。

什么是scipy、numpy、matplotlib?

Python是一種通用語(yǔ)言。它被解釋運(yùn)行,是動(dòng)態(tài)類型語(yǔ)言,并且非常適合交互工作和快速實(shí)現(xiàn)原型,然而又足夠強(qiáng)大用來(lái)寫大型應(yīng)用。

NumPy是一個(gè)定義了數(shù)值數(shù)組和矩陣類型和它們的基本運(yùn)算的語(yǔ)言擴(kuò)展。

SciPy是另一種使用NumPy來(lái)做高等數(shù)學(xué)、信號(hào)處理、優(yōu)化、統(tǒng)計(jì)和許多其它科學(xué)任務(wù)的語(yǔ)言擴(kuò)展。

Matplotlib是一個(gè)幫助繪圖的語(yǔ)言擴(kuò)展。

它們是用來(lái)干什么的?

SciPy和其它這些能用來(lái)完成許多任務(wù):

  • 首先它們很適于用來(lái)進(jìn)行嚴(yán)重依賴數(shù)學(xué)和數(shù)值運(yùn)算的計(jì)算,它們可以原生地使用數(shù)組、矩陣和對(duì)數(shù)組和矩陣的運(yùn)算,求出特征根,計(jì)算積分,解決微分方程。

    NumPy的數(shù)組類(被用來(lái)實(shí)現(xiàn)矩陣類的基礎(chǔ))是考慮速度的實(shí)現(xiàn),所以存取NumPy數(shù)組比存取Python列表速度更快。此外,NumPy實(shí)現(xiàn)一種數(shù)組語(yǔ)言,以致于不需要大多數(shù)循環(huán)。例如,普通Python(C等等也是相似的):

      a = range(10000000)
      b = range(10000000)
      c = []
      for i in range(len(a)):
        c.append(a[i] + b[i])
    

    這個(gè)循環(huán)將在幾GHz的處理器上耗時(shí)5到10秒,而NumPy:

      import numpy as np
      a = np.arange(10000000)
      b = np.arange(10000000)
      c = a + b
    

    不僅這個(gè)更加簡(jiǎn)潔和易讀,而且相比幾乎是瞬間的,甚至NumPy的導(dǎo)入都比普通Python中的循環(huán)更快。為什么?Python是一種動(dòng)態(tài)類型的解釋語(yǔ)言,這意味著在每次循環(huán)迭代時(shí)它都必須檢查運(yùn)算對(duì)象a和b的類型來(lái)選則+正確的意義。(在python中+被用到許多地方,比如連接字符串、可以有不同元素類型的列表)當(dāng)’+’的操作對(duì)象之一是一個(gè)NumPy數(shù)組時(shí),NumPy的add函數(shù)將被Python自動(dòng)選擇,僅僅檢測(cè)一次類型。然后它通過(guò)編譯C函數(shù)執(zhí)行”真正的”加法循環(huán)。這和普通python中的解釋循環(huán)相比是非??斓?。

  • 有許多通用的或特定用途的數(shù)值代碼使用了numpy和scipy。參考局部軟件索引來(lái)查看部分列表。Python有許多用來(lái)創(chuàng)建交互應(yīng)用的高級(jí)的模塊(例如TraitsUIwxPython)。和scipy一同使用這些是最快的創(chuàng)建科學(xué)應(yīng)用的方法。

  • 使用ipython使得交互工作更加簡(jiǎn)單。數(shù)據(jù)處理,數(shù)值模型探索,在運(yùn)行中嘗試運(yùn)算可以很快地從一個(gè)想法得到結(jié)果(參考artical on ipython)。
  • matplotlib模塊制造高質(zhì)量的繪圖,通過(guò)它你可以把你的數(shù)據(jù)和模型轉(zhuǎn)化為展示或文章用的圖像。不必在一個(gè)程序中做數(shù)值計(jì)算,保存數(shù)據(jù),然后用另一個(gè)繪圖。

如何使用scipy工作

Python是一門語(yǔ)言,它有幾個(gè)用戶界面。沒(méi)有一個(gè)單獨(dú)的程序可以開(kāi)始并且給一個(gè)集成的用戶體驗(yàn)。取而代之的是各種使用python的方法。1

最普遍的方法是使用高級(jí)python交互shell來(lái)輸入命令和運(yùn)行腳本。腳本可以用任何編輯器來(lái)寫,例如SPE,PyScripter,甚至notepad,emacs或者vi/vim。

scipy和numpy默認(rèn)都沒(méi)有提供繪圖函數(shù)。它們僅僅是數(shù)值工具。推薦的繪圖工具包是matplotlib。

在Windows、Mac OS X和Linux下,所有這些工具都被Enthought Python發(fā)行版提供,獲取更多關(guān)于安裝這些的指導(dǎo)參考此站點(diǎn)安裝scipy部分。

學(xué)習(xí)使用scipy

最快的使用scipy工作的方法可能就是這個(gè)交互數(shù)據(jù)分析教程

去學(xué)習(xí)Python語(yǔ)言,python教程可以讓你迅速熟悉python語(yǔ)法和對(duì)象。你可以從http://docs.python.org/download.html下載這個(gè)教程。

Dave Kuhlman的numpy和scipy教程是另一個(gè)很好的介紹:http://www.rexx.com/~dkuhlman/scipy_course_01.html.

本站點(diǎn)上的文檔Cookbook部分提供更多學(xué)習(xí)材料。

示例會(huì)話

交互工作

讓我們看看在矩形窗函數(shù)的傅利葉變換。我們將使用一個(gè)交互python shell——ipython來(lái)做這個(gè)。因?yàn)槲覀兿胍ㄟ^(guò)交互繪圖呈現(xiàn)結(jié)果,我們將啟動(dòng)使用--pylab參數(shù)啟動(dòng)ipython,這個(gè)參數(shù)允許使用matplotlib交互。

$ ipython --pylab
Python 2.5.1 (r251:54863, May  2 2007, 16:27:44)
Type "copyright", "credits" or "license" for more information.
IPython 0.7.3 -- An enhanced Interactive Python.
?       -> Introduction to IPython's features.
%magic  -> Information about IPython's 'magic' % functions.
help    -> Python's own help system.
object? -> Details about 'object'. ?object also works, ?? prints more.
  Welcome to pylab, a matplotlib-based Python environment.
  For more information, type 'help(pylab)'.

ipython提供了許多方便的特性,想tab補(bǔ)全python函數(shù)和一個(gè)優(yōu)秀的幫助系統(tǒng)。

In [1]: %logstart
Activating auto-logging. Current session state plus future input saved.
Filename       : ipython_log.py
Mode           : rotate
Output logging : False
Raw input log  : False
Timestamping   : False
State          : active

這個(gè)激活一個(gè)登錄會(huì)話到一個(gè)文件。登錄文件格式允許在以后就像一個(gè)python腳本一樣被簡(jiǎn)單的執(zhí)行,或編輯進(jìn)一個(gè)程序。ipython也記錄所有的輸入輸出(并把它們保存在叫In和Out的列表中),因此你可以啟動(dòng)有追溯的登錄。

In [2]: from scipy import *

因?yàn)閚umpy和scipy不是構(gòu)建在python中的,你必須顯示地告訴python加載它們的特性。Scipy提供numpy所以當(dāng)導(dǎo)入scipy時(shí)導(dǎo)入它是不必要的。

現(xiàn)在開(kāi)始實(shí)際的數(shù)學(xué):

In [3]: a = zeros(1000)
In [4]: a[:100]=1

第一行正如你所期望的那樣簡(jiǎn)單地創(chuàng)建了一個(gè)有1000個(gè)0的數(shù)組;numpy默認(rèn)使這些0是雙精度浮點(diǎn)數(shù),但是如果我想要單精度或復(fù)數(shù),我可以指定zeors的額外參數(shù)。第二行把一百個(gè)元素設(shè)置成-1.

然后我想要對(duì)這個(gè)數(shù)組進(jìn)行傅利葉變換,scipy提供fft函數(shù)來(lái)完成這些:

b = fft(a)

為了看看b是什么樣的,我將使用matplotlib庫(kù)。如果你使用”–pylab”啟動(dòng)ipython將不需要導(dǎo)入matplotlib。否則你應(yīng)導(dǎo)入它:from pylab import *但是你將沒(méi)有交互功能(當(dāng)你創(chuàng)建時(shí)自動(dòng)繪圖)。

In [6]: plot(abs(b))
Out[6]: [<matplotlib.lines.Line2D instance at 0xb7b9144c>]
In [7]: show()

這將出現(xiàn)一個(gè)顯示b的圖像的窗口,如果你啟動(dòng)ipython時(shí)使用--pylab的話show命令是不必要的。

我注意到如果我把b的0頻移動(dòng)到中間看起來(lái)更好。我可以通過(guò)連接b的后半部分和前半部分來(lái)實(shí)現(xiàn),但是我記不清concatenate的語(yǔ)法了:

In [8]: concatenate?
Type:           builtin_function_or_method
Base Class:     <type 'builtin_function_or_method'>
String Form:    <built-in function concatenate>
Namespace:      Interactive
Docstring:
    concatenate((a1, a2, ...), axis=0)
    Join arrays together.
    The tuple of sequences (a1, a2, ...) are joined along the given axis
    (default is the first one) into a single numpy array.
    Example:
    >>> concatenate( ([0,1,2], [5,6,7]) )
    array([0, 1, 2, 5, 6, 7])
In [9]: f=arange(-500,500,1)
In [10]: grid(True)
In [11]: plot(f,abs(concatenate((b[500:],b[:500]))))
Out[11]: [<matplotlib.lines.Line2D instance at 0xb360ca4c>]
In [12]: show()

這得到了我想要的圖像。我可以使用交互控制上下移動(dòng)和縮放圖片,并且為包含在出版物中產(chǎn)生postscript輸出(如果你想要學(xué)習(xí)更多繪圖知識(shí),建議你閱讀matplotlib教程)。

運(yùn)行腳本

當(dāng)你一遍又一遍重復(fù)做著相同的工作,把一些命令保存在文件中并把它們作為腳本在ipython中運(yùn)行將很有用。你可以使用”Ctrl-D”退出當(dāng)前的ipython會(huì)話并且編輯ipython_log.py文件。當(dāng)你想要執(zhí)行這個(gè)文件中的指令時(shí),你可以打開(kāi)一個(gè)新的ipython會(huì)話輸入命令%run -i ipython_log.py。

當(dāng)編輯一個(gè)腳本文件時(shí),在ipython中嘗試一些命令也很方便。這將允許你在保存和運(yùn)行之前,對(duì)一些簡(jiǎn)單的情況逐行嘗試你的腳本。

一些關(guān)于導(dǎo)入(import)的筆記

如果你僅僅初學(xué)scipy和與其伴侶,以下的東西對(duì)你并不那么重要,不要太操心。但是當(dāng)你開(kāi)發(fā)一些大型的應(yīng)用時(shí)最好記住它。

對(duì)交互工作(在ipython中)和一些小型的腳本使用from scipy import *沒(méi)什么。這樣將會(huì)有個(gè)優(yōu)點(diǎn)就是所有的功能在當(dāng)前命名空間都是立即可用的。然而,對(duì)大型的程序和軟件包來(lái)說(shuō),建議只導(dǎo)入你真正需要的函數(shù)和模塊。讓我們考慮這種情況:你(為了無(wú)論什么理由)想要比較numpy和scipy的fft函數(shù)。在你的腳本中你應(yīng)這樣寫:

# import from module numpy.fft
from numpy.fft import fft
# import scipy's fft implementation and rename it;
# Note: `from scipy import fft` actually imports numpy.fft.fft (check with
# `scipy.fft?` in Ipython or look at .../site-packages/scipy/__init__.py)
from scipy.fftpack import fft as scipy_fft

這個(gè)優(yōu)勢(shì)就是,當(dāng)你查看代碼時(shí),你可以顯式的知道你在導(dǎo)入什么,代碼便因此變得清晰和可讀。而且,這通常比通過(guò)import *導(dǎo)入所有東西更快,特別是如果你是從一個(gè)像scipy一樣特別大的庫(kù)中導(dǎo)入。

然而,如果你使用許多不同的numpy函數(shù),如果你顯式導(dǎo)入每一個(gè)函數(shù)導(dǎo)入聲明將變得非常長(zhǎng)。但是你可以導(dǎo)入整個(gè)包來(lái)代替使用import *。

from numpy import *  # bad
from numpy import abs, concatenate, sin, pi, dot, amin, amax, asarray, cov, diag, zeros, empty, exp, eye, kaiser # very long
import numpy         # good
# use numpy.fft.fft() on array 'a'
b = numpy.fft.fft(a)

沒(méi)關(guān)系,因?yàn)橥ǔ?code style="padding:2px 4px; font-family:Monaco,Menlo,Consolas,'Courier New',monospace; font-size:12px; color:rgb(221,17,68); white-space:nowrap">import numpy非??臁A硪环矫?,scipy相當(dāng)大(有很多子包)。因此from scipy import *第一次導(dǎo)入可能非常慢(所有接下來(lái)的導(dǎo)入聲明將會(huì)更迅速地執(zhí)行,因?yàn)閷?shí)際上沒(méi)有再次導(dǎo)入)。這是為什么當(dāng)你導(dǎo)入scipy時(shí)子包的導(dǎo)入默認(rèn)被禁止(像scipy.fft),這樣它才能像import numpy一樣快。如果你想使用比如說(shuō)scipy.fft,你不得不顯式的導(dǎo)入它(這無(wú)論如何是個(gè)好的想法)。如果你想要一次加載所有子包,你將不得不import scipy; scipy.pkgbuild()。使用ipython的交互會(huì)話,你可以通過(guò)scipy profile調(diào)用它(ipython -p scipy),為你讀取scipy的配置文件(通常在~/.ipython/ipythonrc-scipy)和加載所有scipy。對(duì)在即時(shí)交互環(huán)境使用scipy和matplotlib繪圖,你可以用像這樣的命令ipython --pylab -p scipy。


文章摘自:http://reverland.org/python/2012/08/24/scipy/

獲得更多有關(guān)全面概述包結(jié)構(gòu)和”pythonic”導(dǎo)入慣例的信息,看一看Python教程的這一部分

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Windows 下面安裝和使用Python, IPython NoteBook (詳細(xì)步驟)
(一)大數(shù)據(jù)和機(jī)器學(xué)習(xí)練習(xí)環(huán)境搭建
從零開(kāi)始用Python3做數(shù)據(jù)分析
利用Python進(jìn)行數(shù)據(jù)分析簡(jiǎn)單介紹
Python 數(shù)據(jù)科學(xué)十大利器,你用過(guò)幾個(gè)?
數(shù)據(jù)分析 機(jī)器學(xué)習(xí)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服