
116
|
第六章
進入 numpy
為了處理使用
perf
發現的記憶體破碎,我們必須找到能夠有效地將操作向量化的套件,
幸運的是,
numpy
擁有我們需要的一切功能—它將資料儲存在連續的記憶體區塊中,並
且支援資料的向量化操作,因此,我們對
numpy
陣列所做的計算全都以區塊的形式發
生,而不需要特地去繞行每個元素,這樣不僅讓矩陣計算容易很多,並且更加快速。讓
我們看一個範例︰
from array import array
import numpy
def norm_square_list(vector):
"""
>>> vector = range(1000000)
>>> %timeit norm_square_list(vector_list)
1000 loops, best of 3: 1.16 ms per loop
"""
norm = 0
for v in vector:
norm += v*v
return norm
def norm_square_list_comprehension(vector):
"""
>>> vector = range(1000000)
>>> %timeit norm_square_list_comprehension(vector_list)
1000 loops, best of 3: 913 μs per loop
"""
return sum([v*v for v in vector])
def norm_squared_generator_comprehension(vector): ...