填充1D numpy数组的最快方法

Ana*_*ake 5 python numpy

我见过类似的问题,但没有直接解决这个问题.我有以下两种方法来填充数组,使用np.zeros()的一半时间更快,一半的时间直接更快.有更好的方法吗?我很擅长使用numpy数组,并且已经参与了加速我的代码的目的,而不是过多地考虑可读性.

import numpy as np
import time

lis = range(100000)

timer = time.time()
list1 = np.array(lis)
print 'normal array creation', time.time() - timer, 'seconds'

timer = time.time()
list2 = np.zeros(len(lis))
list2.fill(lis)
print 'zero, fill - array creation', time.time() - timer, 'seconds'
Run Code Online (Sandbox Code Playgroud)

谢谢

eum*_*iro 5

如果你有一个浮点列表a=[x/10. for x in range(100000)],那么你可以创建一个数组:

np.array(a) # 9.92ms
np.fromiter(a, dtype=np.float) # 5.19ms
Run Code Online (Sandbox Code Playgroud)

你的方法

list2 = np.zeros(len(lis))
list2.fill(lis)
Run Code Online (Sandbox Code Playgroud)

不会按预期工作.该.fill填充与一个值的整个阵列.