我需要创建一个长度为NumPy的数组n
,其中每个元素为v
。
还有什么比:
a = empty(n)
for i in range(n):
a[i] = v
我知道zeros
并且ones
可以在v = 0,1下使用。我可以使用v * ones(n)
,但是在速度会慢很多。v
is 上将不起作用None
,而且
您不能将None放在一个numpy数组中,因为单元格是使用特定的数据类型创建的,而None具有它自己的类型并且实际上是一个指针。
—
卡米恩
@Camion是的,我现在知道:)当然
—
最多
v * ones(n)
仍然很恐怖,因为它使用了昂贵的乘法。尽管将其替换为*
,+
但v + zeros(n)
在某些情况下却表现出令人惊讶的良好效果(stackoverflow.com/questions/5891410/…)。
最大值,而不是在添加v之前创建零数组,更快地将其创建为空,
—
Camion
var = np.empty(n)
然后用'var [:] = v'填充。(顺便说一句,np.full()
就是这样快)
a = np.zeros(n)
在循环中使用的速度比快a.fill(0)
。这与我的预期相反,因为我认为a=np.zeros(n)
需要分配和初始化新的内存。如果有人能解释这一点,我将不胜感激。