我知道如何在 100 个元素的数组中填充零:
np.zeros(100)
但是如果我想用 9 填充呢?
您可以使用:
a = np.empty(100)
a.fill(9)
或者,如果您更喜欢切片语法:
a[...] = 9
np.empty
与 , 等相同np.ones
,但可以更快一些,因为它不初始化数据。
在较新的 numpy 版本(1.8 或更高版本)中,您还拥有:
np.full(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])
但是,请注意,如果您修改任何一个元素,数组中的所有值都会被修改。
这个问题已经在前面讨论过,请参阅NumPy 数组初始化(使用相同的值填充),以及哪种方法最快。
据我所知,没有专门的函数可以用 9s 填充数组。np.empty(100)
因此,您应该使用9s 或循环中的任何内容创建一个空(即未初始化的)数组。