初始化numpy数组时,最好用列表或元组指定形状吗?

时间:2018-04-01 22:30:14

标签: python arrays performance numpy

我的教授总是使用一个列表;我很好奇这是否更快。

我的意思是:

np.zeros((10, 10))

或者这个:

np.zeros([10, 10])

优选的?一个比另一个快吗?

1 个答案:

答案 0 :(得分:1)

差异绝对是微不足道的,但元组基本上趋向于更加优化。因为元组是不可变对象,并且为了获得它们,它们必须放弃一些使它们在某些情况下得到优化的特性。在这种情况下,您可以简单地对两个片段进行基准测试:

In [81]: %timeit np.zeros((10, 10))
447 ns ± 20.2 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

In [82]: %timeit np.zeros([10, 10])
491 ns ± 3.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

它表明使用列表的速度慢约50纳秒,这对您的日常编程任务没有任何影响。除非你是量子物理学家;)。