问题:将单个元素添加到numpy中的数组
我有一个numpy数组,其中包含:
[1, 2, 3]
我想创建一个包含以下内容的数组:
[1, 2, 3, 1]
也就是说,我想将第一个元素添加到数组的末尾。
我尝试了明显的方法:
np.concatenate((a, a[0]))
但是我说错了 ValueError: arrays must have same number of dimensions
我不明白这一点-数组都是一维数组。
回答 0
append()
创建一个新数组,该数组可以是带有附加元素的旧数组。
我认为使用适当的方法添加元素更为正常:
a = numpy.append(a, a[0])
回答 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)
回答 2
a[0]
不是数组,它是的第一个元素,a
因此没有尺寸。
尝试a[0:1]
改用,这将返回a
单个项目数组内的第一个元素。
回答 3
试试这个:
np.concatenate((a, np.array([a[0]])))
http://docs.scipy.org/doc/numpy/reference/generation/numpy.concatenate.html
连接需要两个元素都是numpy数组;但是,[0]不是数组。这就是为什么它不起作用。
回答 4
这个命令
numpy.append(a, a[0])
不会改变a
数组。但是,它返回一个新的修改后的数组。因此,如果a
需要修改,则必须使用以下内容。
a = numpy.append(a, a[0])
回答 5
t = np.array([2, 3])
t = np.append(t, [4])
回答 6
这可能有点矫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])
回答 7
假设a=[1,2,3]
您希望它成为[1,2,3,1]
。
您可以使用内置的附加功能
np.append(a,1)
这里1是一个整数,它可以是字符串,并且可以属于或不属于数组中的元素。印刷品:[1,2,3,1]
回答 8
如果要添加元素,请使用 append()
a = numpy.append(a, 1)
在这种情况下,在数组末尾添加1
如果要插入元素,请使用 insert()
a = numpy.insert(a, index, 1)
在这种情况下,您可以将1放置在所需的位置,并使用index设置数组中的位置。