python - 填充一维 numpy 数组的最快方法

标签 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'

谢谢

最佳答案

如果你有一个 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/

相关文章:

python - 编码风格 (PEP8) - 模块级别 "dunders"

python - 小数缓存是在 Python 规范中定义的还是一个实现细节?

python - 给定值的最近值

PYTHON/NUMPY : How to assign various data types to the data type object numpy. dtype() 在循环中

python - 如何对具有组合列表的 Pandas 数据框进行分组?

python - 使用 cython 包装 C++ 项目

python - 使用opencv和tensorflow时如何修复 "ValueError: An initializer for variable conv2d/kernel of is required"

python - 仅保留列表的唯一实例,唯一的区别是顺序

python - 非常慢的 Numpy 缓冲区指针访问

Python 3.5.1 更新后无法导入 numpy