我见过类似的问题,但没有直接解决这个问题.我有以下两种方法来填充数组,使用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)
谢谢
如果你有一个浮点列表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填充与一个值的整个阵列.