我需要创建一个长度为n
的NumPy数组,每个元素的长度为v
.
还有什么比这更好的吗?
a = empty(n)
for i in range(n):
a[i] = v
我知道zeros
和ones
在v=0,1的情况下可以用,我可以用v * ones(n)
,但是当v
是None
时不起作用,而且会慢得多.
我需要创建一个长度为n
的NumPy数组,每个元素的长度为v
.
还有什么比这更好的吗?
a = empty(n)
for i in range(n):
a[i] = v
我知道zeros
和ones
在v=0,1的情况下可以用,我可以用v * ones(n)
,但是当v
是None
时不起作用,而且会慢得多.
NumPy版本1.8引入了np.full()
,这是一种比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]])
这可以说是创建填充了特定值的数组的the种方式,因为它显式地描述了正在实现的内容(而且原则上它可以非常高效,因为它执行非常具体的任务).