预分配在一次调用中分配了您需要的所有内存,而调整数组的大小(通过对append,insert,concatenate或resize的调用)可能需要将数组复制到更大的内存块中。因此,您是正确的,相比于调整大小,预分配是首选的(并且应该比调整大小要快)。
根据您要创建的内容,有许多“首选”方法可以预分配numpy数组。有
np.zeros,
np.ones,
np.empty,
np.zeros_like,
np.ones_like,和
np.empty_like,和其他许多人创建了有用的阵列,如
np.linspace,和
np.arange。
所以
ar0 = np.linspace(10, 20, 16).reshape(4, 4)
如果这最接近
ar0您的期望,那就很好了。
但是,要使最后一列全为1,我认为首选的方法是说
ar0[:,-1]=1
由于形状
ar0[:,-1]为
(4,),因此广播1以匹配该形状。



