python - NumPy数组初始化(填充相同的值)
我需要创建一个长度为zeros的NumPy数组,其中每个元素都是ones。
还有什么比:
a = empty(n)
for i in range(n):
a[i] = v
我知道zeros和ones适用于v = 0,1。我可以使用v * ones(n),但是当v是None时它不会工作,而且也会慢得多。
max asked 2019-04-13T03:11:39Z
7个解决方案
204 votes
NumPy 1.8引入了empty(),这是一个比empty()更直接的方法,接着是fill(),用于创建一个填充了某个值的数组:
>>> 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]])
这可以说是创建一个充满某些值的数组的方式,因为它明确地描述了正在实现的内容(原则上它可以非常高效,因为它执行一个非常特定的任务)。
Eric Lebigot answered 2019-04-13T03:12:03Z
80 votes
更新为Numpy 1.7.0 :(给@Rolf Bartstra的帽子提示。)
a=np.empty(n); a.fill