Skip to Main Content
高效能PYTHON程式設計
book

高效能PYTHON程式設計

by Micha Gorelick, Ian Ozsvald
August 2015
Intermediate to advanced content levelIntermediate to advanced
384 pages
7h 42m
Chinese
GoTop Information, Inc.
Content preview from 高效能PYTHON程式設計
矩陣與向量計算
|
119
numpy 應用到擴散問題
利用學到的
numpy
知識,可以輕易地將我們的純 Python 程式碼改寫成向量化的計算,唯
一必須介紹的新功能就是
numpy
roll
函式,這個函式的功能等同於我們對索引取模數
modulo)的技巧,但是,它針對整個
numpy
陣列做這件事。本質上,它以向量化的方
式重新索引︰
>>> import numpy as np
>>> np.roll([1,2,3,4], 1)
array([4, 1, 2, 3])
>>> np.roll([[1,2,3],[4,5,6]], 1, axis=1)
array([[3, 1, 2],
[6, 4, 5]])
roll
函式建立新的
numpy
陣列,有優點,也有缺點。缺點是我們要花時間配置新空間,
接著必須填上適當的資料。另一方面,一旦建立新陣列,我們就能夠相當快速地對它進
行向量化操作,而且不必承受快取未命中的痛苦,這將大幅提升我們的格點計算速度。
稍後在本章中,我們會重寫這段程式碼,好讓我們不必持續配置更多的記憶體就能夠得
到相同的好處。
藉由這個額外的函式,我們可以使用較簡單且向量化的
numpy
陣列來重寫範例 6-6
Python 擴散程式碼。另外,我們將微分的計算(
grid_xx
grid_yy
)拆解成獨立的函
式。範例 6-9 顯示初步的
numpy
擴散程式碼。
範例
6-9 
初步的
numpy
擴散
import numpy as np
grid_shape = (1024, 1024)
def laplacian(grid): ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

流畅的Python

流畅的Python

Luciano Ramalho
手把手教会你linux

手把手教会你linux

桑德.范.乌格特

Publisher Resources

ISBN: 9789863477105