用相同的数字填充numpy数组?

用相同的数字填充numpy数组?,numpy,Numpy,我知道如何在100个元素的数组中填充零: np.zeros(100) 但是如果我想用9填充它呢?据我所知,没有专门的函数用9填充数组。因此,您应该使用np.empty(100)创建一个空(即未初始化)数组,并在循环中填充9或任何值。如果您只想在整个数组中使用相同的值,并且永远不想更改它,您可以通过将其设置为零来欺骗步长。通过这种方式,您只需要为单个值获取内存。但是你会得到一个任意大小和形状的虚拟numpy数组 >>> import numpy as np >>&g

我知道如何在100个元素的数组中填充零:

np.zeros(100)

但是如果我想用9填充它呢?

据我所知,没有专门的函数用9填充数组。因此,您应该使用
np.empty(100)
创建一个空(即未初始化)数组,并在循环中填充9或任何值。

如果您只想在整个数组中使用相同的值,并且永远不想更改它,您可以通过将其设置为零来欺骗步长。通过这种方式,您只需要为单个值获取内存。但是你会得到一个任意大小和形状的虚拟numpy数组

>>> import numpy as np
>>> from numpy.lib import stride_tricks
>>> arr = np.array([10])
>>> stride_tricks.as_strided(arr, (10, ), (0, ))
array([10, 10, 10, 10, 10, 10, 10, 10, 10, 10])
但是,请注意,如果修改任何一个元素,数组中的所有值都将被修改。

您可以使用:

a = np.empty(100)
a.fill(9)
或者,如果您更喜欢切片语法:

a[...] = 9
np.empty
np.ones
等相同,但可能会快一点,因为它不会初始化数据

在较新的numpy版本(1.8或更高版本)中,您还具有:

np.full(100, 9)

这个问题在前面已经讨论了很长时间,请参见,哪种方法最快。

是,但没有循环。使用
array.fill(9)
array[…]=9
@seberg:您的评论应该是答案。或
a[:]=9
。至少对我来说,这更为惯用。@mtrw关于品味,我喜欢省略号,因为它明确地表示“接受一切”。另外,对于单例数组的角情况,它可以表示没有轴:
np.array(5)[…]=8
工作,
np.array(5)[:]=8
不工作。有趣的是,我没有考虑单例问题。谢谢有趣的把戏。但是,如果所有的值都是永远不会改变的,那么可以使用标量值而不是数组。