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