繁体   English   中英

附加到np.array,但不留下?

[英]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.concatenatenp.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.uniformsize=参数np.random.uniform填充其余的行会更快。 :

newposition[3:] = np.random.uniform(0, 0.25, size=1697)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM