我见过类似的问题,但没有一个直接解决这个问题。 我已经对以下两种填充数组的方式进行了计时,一半的时间使用 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'
谢谢
最佳答案
如果你有一个 float 列表 a=[x/10. for x in range(100000)]
,那么你可以创建一个数组:
np.array(a) # 9.92ms
np.fromiter(a, dtype=np.float) # 5.19ms
你的方法
list2 = np.zeros(len(lis))
list2.fill(lis)
不会按预期工作。 .fill
用一个值填充整个数组。
关于python - 填充一维 numpy 数组的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8355441/