下面的代碼顯示迭代器比numpy.arrays快得多(除非我做錯了什麼)。向量數學 - numpy vs迭代器
import numpy as np
import itertools
import time
dim = 10000
arrays = [np.array((1, 2, 3)) for x in range(dim)]
iterators = [iter((1, 2, 3)) for x in range(dim)]
t_array = time.time()
print(sum(arrays))
print(time.time() - t_array)
# [10000 20000 30000]
# 0.016389131546020508
t_iterators = time.time()
print(list(sum(x) for x in zip(*iterators)))
print(time.time() - t_iterators)
# [10000, 20000, 30000]
# 0.0011029243469238281
而且迭代器版本不僅適用於迭代器,還適用於np.arrays,列表或元組。
因此,這是客觀問題的地方,我猜想有一個客觀的原因,numpy常常被用於這種事情(基於我在互聯網上看到的)。
這是什麼原因?或者我在做一些客觀錯誤的事情?
'numpy'向量可以存儲在內存中用於進一步計算,而迭代器不能,值將消失,如果沒有存儲在某處 – simonzack
高度相關:http://stackoverflow.com/questions/16819261/why-is- numpy的陣列此結果有時-非常慢。這可能是重複的... – Hooked