14

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

np.zeros(100)

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

4

4 回答 4

22

您可以使用:

a = np.empty(100)
a.fill(9)

或者,如果您更喜欢切片语法:

a[...] = 9

np.empty与 , 等相同np.ones,但可以更快一些,因为它不初始化数据。

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

np.full(100, 9)
于 2012-11-02T13:08:23.133 回答
2

如果您只想在整个数组中使用相同的值并且您从不想更改它,您可以通过将其设为零来欺骗步幅。通过这种方式,您只需将内存用于单个值。但是你会得到一个任意大小和形状的虚拟 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])

但是,请注意,如果您修改任何一个元素,数组中的所有值都会被修改。

于 2012-11-02T09:43:03.960 回答
1

这个问题已经在前面讨论过,请参阅NumPy 数组初始化(使用相同的值填充),以及哪种方法最快。

于 2012-11-02T20:28:45.103 回答
-1

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

于 2012-11-02T09:03:52.013 回答