【发布时间】:2018-11-27 18:23:06
【问题描述】:
我用纯 Python 编程 2 年。
现在我正在学习 Numpy,我很困惑。
在教程中给出了 Numpy 比纯 python 更高效的示例。给定示例,但是当我尝试例如简单迭代时:
import numpy as np
import time
start = time.time()
list = range(1000000)
array = np.arange(1000000)
for element in list:
pass
print('\n'+str((time.time() - start)*1000)+'\n')
start = time.time()
for element in np.nditer(array, order='F'):
pass
print('\n'+str((time.time() - start)*1000)+'\n')
我得到了一个输出:
87.67843246459961
175.25482177734375
从上面可以看出,在 Numpy 上的迭代效率远低于纯 Python。
我的问题是:我不明白,也无法自己解释为什么要使用 Numpy,以及:什么时候使用它?
【问题讨论】:
-
您错过了向量化问题时效率更高的部分。此外,永远不要迭代数组 - 最好先转换为列表。
-
除了 kabanus 所说的,还值得指出的是,您真的不应该将变量命名为“list”和“array”。
-
如果你迭代,你会发现 numpy 数组更慢。它们的优势在于矢量化。
标签: python performance numpy