NumPy:如何进行数组初始化(填充相同的值)?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (86)

我需要创建一个长度为NumPy的数组n,其中的每一个元素都是v...

有什么比以下更好的吗?

a = empty(n)
for i in range(n):
    a[i] = v

zerosones对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

扫码关注云+社区