在numpy中将单个元素添加到数组中

rob*_*ntw 93 python arrays numpy

我有一个numpy数组包含:

[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

我想创建一个包含以下内容的数组:

[1, 2, 3, 1]
Run Code Online (Sandbox Code Playgroud)

也就是说,我想将第一个元素添加到数组的末尾.

我试过了明显的事:

np.concatenate((a, a[0]))
Run Code Online (Sandbox Code Playgroud)

但我得到一个错误说 ValueError: arrays must have same number of dimensions

我不明白这一点 - 数组都只是1d数组.

ste*_*ert 136

append() 创建一个新数组,该数组可以是带有附加元素的旧数组.

我认为使用适当的方法添加元素更为正常:

a = numpy.append(a, a[0])
Run Code Online (Sandbox Code Playgroud)

  • 该命令不会改变`a`数组.但是,它返回一个新的修改过的数组.因此,如果需要`a`修改,则必须使用`a = numpy.append(a,a [0])`. (23认同)
  • 如果我只想添加一个元素,为什么追加会创建一个全新的数组? (5认同)
  • 我不喜欢我们需要为如此简单的命令调用另一个函数。如果数组本身有一个内部方法,如“a.append(1)”、“a.add(1)”,甚至类似于“a + [1]”等列表,那就更好了 (5认同)

DMA*_*361 12

a[0]它不是一个数组,它是第一个元素,a因此没有维度.

尝试使用a[0:1],它将返回a单个项目数组内的第一个元素.


Jur*_*dom 11

如果每次只追加一次或一次,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)
Run Code Online (Sandbox Code Playgroud)

之后使用python list转换为数组:

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)
Run Code Online (Sandbox Code Playgroud)

预分配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)
Run Code Online (Sandbox Code Playgroud)

当最终大小未知时,预分配很困难,我尝试预先分配50块,但它并没有接近使用列表.

85.1 ms ± 561 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
Run Code Online (Sandbox Code Playgroud)


rea*_*000 9

试试这个:

np.concatenate((a, np.array([a[0]])))
Run Code Online (Sandbox Code Playgroud)

http://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html

concatenate需要两个元素都是numpy数组; 但是,[0]不是数组.这就是为什么它不起作用.


Amj*_*jad 8

这个命令,

numpy.append(a, a[0])

不会改变a阵列.但是,它返回一个新的修改过的数组.所以,如果a需要修改那么

a = numpy.append(a,a[0])

必须使用.


小智 7

如果你想添加一个元素使用append()

a = numpy.append(a, 1)在本例中,在数组末尾添加 1

如果你想插入一个元素使用insert()

a = numpy.insert(a, index, 1)在这种情况下,您可以将 1 放在您想要的位置,使用索引设置数组中的位置。


小智 6

t = np.array([2, 3])
t = np.append(t, [4])
Run Code Online (Sandbox Code Playgroud)