【发布时间】:2012-10-22 22:14:22
【问题描述】:
我知道如何在 100 个元素的数组中填充零:
np.zeros(100)
但是如果我想用 9 填充呢?
【问题讨论】:
标签: numpy
我知道如何在 100 个元素的数组中填充零:
np.zeros(100)
但是如果我想用 9 填充呢?
【问题讨论】:
标签: numpy
你可以使用:
a = np.empty(100)
a.fill(9)
或者如果您更喜欢切片语法:
a[...] = 9
np.empty 与np.ones 等相同,但速度会更快一些,因为它不会初始化数据。
在较新的 numpy 版本(1.8 或更高版本)中,您还拥有:
np.full(100, 9)
【讨论】:
a[:] = 9。至少对我来说,这更符合习惯。
np.array(5)[...] = 8 有效,np.array(5)[:] = 8 无效。
如果您只想在整个数组中使用相同的值并且不想更改它,您可以通过将其设为零来欺骗步幅。通过这种方式,您只需将内存用于单个值。但是你会得到一个任意大小和形状的虚拟 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 array initialization (fill with identical values),还有哪种方法最快。
【讨论】:
据我所知,没有专门的函数可以用 9 填充数组。所以你应该使用np.empty(100)创建一个空的(即未初始化的)数组,并在循环中用9或其他填充它。
【讨论】:
array.fill(9) 或array[...] = 9。