【发布时间】:2020-12-31 08:32:20
【问题描述】:
数组不应该更快,因为它们消耗更少的内存 并且据我所知,python 不会像在列表中那样对元素应用类型方法。
import numpy as np
import time
length = 150000000
my_list = range(length)
list_start_time = time.time()
for item in my_list:
pass
print(f'my_list finished in: {time.time() - list_start_time}')
# # Output => my_list finished in: 3.57804799079895
my_array = np.arange(length)
array_start_time = time.time()
for item in my_array:
pass
print(f'my_array finished in: {time.time() - array_start_time}')
# # Output => my_array finished in: 11.598113536834717
【问题讨论】:
-
如果您使用矢量化(读取 Numpy)函数,它们会更快。使用常规循环需要在 C 库和 Python 运行时之间进行多次切换。简而言之,如果您使用常规循环,请不要使用 Numpy 数组。如果你只能使用 Numpy 函数,它们会更快。
-
啊哈明白了,有没有对应for循环的numpy函数??
-
不,这就是“矢量化”的意义所在。你到底想做什么?乘向量?只需
*即可。添加它们?同样...等等。 -
我正在尝试添加它们,我可以看到它现在更快了,非常感谢:)