只是尝试将项添加到数组中,但由于某种原因,它返回时没有添加小数。
import numpy as np
newposition = np.array([1,2,3])
np.append(newposition,(np.random.uniform(0,0.25)))
print newposition
返回以下内容,即不需要添加内容。有什么建议?
[1 2 3]
答案 0 :(得分:2)
知道了。我将创建一个新值列表,然后将其转换为数组,并将旧数组名称分配给新数组。
答案 1 :(得分:0)
不要养成使用np.append
构建数组的坏习惯!
附加到numpy数组是很昂贵的,因为没有在内存中创建数组的新副本就无法做到这一点(np.concatenate
,np.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)