1.4 函數(shù)庫(kù)介紹
Python的科學(xué)計(jì)算功能由眾多的擴(kuò)展庫(kù)協(xié)作完成。在本書的后續(xù)章節(jié)中,將對(duì)下列擴(kuò)展庫(kù)進(jìn)行詳細(xì)介紹。
1.4.1 數(shù)值計(jì)算庫(kù)
NumPy為Python帶來(lái)了真正的多維數(shù)組功能,并且提供了十分豐富的對(duì)數(shù)組進(jìn)行處理和運(yùn)算的函數(shù)集。它對(duì)常用的數(shù)學(xué)函數(shù)進(jìn)行數(shù)組化,使這些數(shù)學(xué)函數(shù)能直接對(duì)數(shù)組進(jìn)行運(yùn)算,將本來(lái)需要在Python中進(jìn)行的循環(huán)運(yùn)算,轉(zhuǎn)移到高效率的庫(kù)函數(shù)中,充分利用這些函數(shù)能明顯地提高程序的運(yùn)算速度。
SciPy則在NumPy的基礎(chǔ)之上添加了許多科學(xué)計(jì)算的函數(shù)庫(kù),其中一些函數(shù)是通過(guò)對(duì)久經(jīng)考驗(yàn)的Fortran數(shù)值計(jì)算庫(kù)進(jìn)行封裝實(shí)現(xiàn)的,例如:
● 線性代數(shù)使用LAPACK庫(kù)
● 快速傅立葉變換使用FFTPACK庫(kù)
● 常微分方程求解使用ODEPACK庫(kù)
● 非線性方程組求解以及最小值求解等使用MINPACK庫(kù)
有了這兩個(gè)庫(kù),Python就有幾乎和MATLAB一樣的數(shù)據(jù)處理能力了。此外,SciPy中的Weave模塊能在Python程序中直接嵌入C++程序,進(jìn)一步提高程序的運(yùn)算速度。
1.4.2 符號(hào)計(jì)算庫(kù)
SymPy是一套數(shù)學(xué)符號(hào)運(yùn)算的擴(kuò)展庫(kù),雖然它目前還沒有到達(dá)1.0版本,但是已經(jīng)足夠好用,可以幫助我們進(jìn)行公式推導(dǎo),做一些簡(jiǎn)單的符號(hào)運(yùn)算工作。
1.4.3 界面設(shè)計(jì)
Python可以使用多種界面庫(kù)編寫GUI程序,例如以TK為基礎(chǔ)的Tkinter、以wxWidgets為基礎(chǔ)的wxPython、以QT為基礎(chǔ)的pyQt4等界面庫(kù)。但是使用這些界面庫(kù)編寫GUI程序仍然是一件十分繁雜的工作。為了讓讀者不在界面設(shè)計(jì)上耗費(fèi)大量精力,從而能把注意力集中到數(shù)據(jù)處理上,本書詳細(xì)介紹了如何使用Traits庫(kù)設(shè)計(jì)圖形界面程序。
Traits庫(kù)分為Traits和TraitsUI兩大部分,使用Traits能對(duì)Python對(duì)象的屬性進(jìn)行類型定義,并為其添加初始化、校驗(yàn)、代理、事件處理等諸多功能。
TraitsUI庫(kù)基于Traits庫(kù),使用MVC(模型—視圖—控制器)模式快速地定義用戶界面,在最簡(jiǎn)單的情況下,甚至不需要寫一句界面相關(guān)的代碼,就可以通過(guò)Traits的屬性定義獲得一個(gè)可用的圖形界面。使用TraitsUI庫(kù)編寫的程序自動(dòng)支持wxPython和pyQt界面庫(kù)。