内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
我需要创建一个长度为NumPy的数组n
,其中的每一个元素都是v
...
有什么比以下更好的吗?
a = empty(n) for i in range(n): a[i] = v
zeros
和ones
对v=0,1有效。
NumPy 1.8np.full()
,这是一种比empty()。
>>> np.full((3, 5), 7) array([[ 7., 7., 7., 7., 7.], [ 7., 7., 7., 7., 7.], [ 7., 7., 7., 7., 7.]]) >>> np.full((3, 5), 7, dtype=int) array([[7, 7, 7, 7, 7], [7, 7, 7, 7, 7], [7, 7, 7, 7, 7]])
这可以说是创建一个包含特定值的数组的方法,因为它显式地描述了正在实现的目标(而且原则上它可以非常高效,因为它执行非常特定的任务)。
为Numpy 1.7.0更新:(向@Rolf Bartstra.)
a=np.empty(n); a.fill(5)
是最快的。
按下降速度顺序:
%timeit a=np.empty(1e4); a.fill(5) 100000 loops, best of 3: 5.85 us per loop %timeit a=np.empty(1e4); a[:]=5 100000 loops, best of 3: 7.15 us per loop %timeit a=np.ones(1e4)*5 10000 loops, best of 3: 22.9 us per loop %timeit a=np.repeat(5,(1e4)) 10000 loops, best of 3: 81.7 us per loop %timeit a=np.tile(5,[1e4]) 10000 loops, best of 3: 82.9 us per loop