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

时间:2015-03-10 21:14:14

标签: python arrays numpy

只是尝试将项添加到数组中,但由于某种原因,它返回时没有添加小数。

import numpy as np
newposition = np.array([1,2,3])
np.append(newposition,(np.random.uniform(0,0.25)))
print newposition

返回以下内容,即不需要添加内容。有什么建议?

[1 2 3]

2 个答案:

答案 0 :(得分:2)

知道了。我将创建一个新值列表,然后将其转换为数组,并将旧数组名称分配给新数组。

答案 1 :(得分:0)

不要养成使用np.append构建数组的坏习惯!

附加到numpy数组是很昂贵的,因为没有在内存中创建数组的新副本就无法做到这一点(np.concatenatenp.vstack等也是如此)。随着阵列越来越大,复制它变得越来越慢。一个1700长的一维矢量仍然不是那么大,但是当你处理数百万个元素时,复制将真正损害性能。

更好的方法是创建一个具有正确最终大小的空数组,然后在进行时填写适当的索引。例如:

# 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数组的其余部分,但在上面的愚蠢示例中,使用size=参数更快np.random.uniform }一次性填写其余的行:

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