[英]Append to np.array, but not staying?
只是试图将项目添加到数组中,但是由于某种原因,此操作将返回而没有添加的十进制数。
import numpy as np
newposition = np.array([1,2,3])
np.append(newposition,(np.random.uniform(0,0.25)))
print newposition
返回以下内容,即无需添加任何内容。 有什么建议么?
[1 2 3]
得到它了。 我将创建一个新值列表,然后将其转换为数组,并将旧的数组名称分配给新的数组。
不要养成使用np.append
建立数组的坏习惯!
追加到numpy数组很昂贵,因为没有办法在内存中不创建该数组的新副本就可以做到( np.concatenate
, np.vstack
等也是如此)。 随着阵列变得越来越大,复制它的速度越来越慢。 1700长的1D向量仍然没有那么大,但是当您处理数百万个元素时,复制确实会影响性能。
更好的方法是创建一个具有正确最终大小的空数组,然后根据需要填写适当的索引。 例如:
# create an empty array of the final size
newposition = np.empty(1700, np.float)
# fill in the first three values
newposition[:3] = 1, 2, 3
# fill in the rest
for ii in xrange(3, 1700):
newposition[ii] = np.random.uniform(0, 0.25)
# or whatever...
您尚未确切显示如何构建其余的newposition
数组,但是在上面的愚蠢示例中,使用np.random.uniform
的size=
参数np.random.uniform
填充其余的行会更快。 :
newposition[3:] = np.random.uniform(0, 0.25, size=1697)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.