Answers:
append()
创建一个新数组,该数组可以是带有附加元素的旧数组。
我认为使用适当的方法添加元素更为正常:
a = numpy.append(a, a[0])
a
阵列。但是,它返回一个新的修改后的数组。因此,如果a
需要修改,则a = numpy.append(a,a[0])
必须使用。
np.append
使用np.concatenate
。只需确保插件具有一维即可。OP错误是a[0]
尺寸为0。
a.append(1)
,a.add(1)
或者甚至类似于列表的某种内部方法,那就更好了a + [1]
如果仅一次或一次附加一次,则np.append
在数组上使用应该没问题。这种方法的缺点是每次调用都会为一个全新的数组分配内存。当为大量样本增加数组时,最好预先分配数组(如果知道总大小),或者追加到列表中,然后再转换为数组。
使用np.append
:
b = np.array([0])
for k in range(int(10e4)):
b = np.append(b, k)
1.2 s ± 16.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
之后使用python列表转换为数组:
d = [0]
for k in range(int(10e4)):
d.append(k)
f = np.array(d)
13.5 ms ± 277 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
预分配numpy数组:
e = np.zeros((n,))
for k in range(n):
e[k] = k
9.92 ms ± 752 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
当最终大小未知时,很难进行预分配,我尝试了以50个块为单位进行预分配,但它几乎无法使用列表。
85.1 ms ± 561 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
试试这个:
np.concatenate((a, np.array([a[0]])))
http://docs.scipy.org/doc/numpy/reference/generation/numpy.concatenate.html
连接需要两个元素都是numpy数组;但是,[0]不是数组。这就是为什么它不起作用。
np.concatenate((a, [a[0]]))
。无论如何,该列表将自动提升为数组类型,从而节省了一些键入操作。
这可能有点矫kill过正,但是我始终将np.take
函数用于任何环绕索引:
>>> a = np.array([1, 2, 3])
>>> np.take(a, range(0, len(a)+1), mode='wrap')
array([1, 2, 3, 1])
>>> np.take(a, range(-1, len(a)+1), mode='wrap')
array([3, 1, 2, 3, 1])
假设a=[1,2,3]
您希望它成为[1,2,3,1]
。
您可以使用内置的附加功能
np.append(a,1)
这里1是一个整数,它可以是字符串,并且可以属于或不属于数组中的元素。印刷品:[1,2,3,1]
np.insert([1,2,3], 3, 1)