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

2024-05-04 11:16:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个numpy数组包含:

[1, 2, 3]

我要创建一个数组,其中包含:

[1, 2, 3, 1]

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

我试过显而易见的:

np.concatenate((a, a[0]))

但我说ValueError: arrays must have same number of dimensions时出错

我不明白-这两个数组都是一维数组。


Tags: ofnumpy元素numberhavenp数组dimensions
3条回答

当只追加一次或偶尔追加一次时,在数组上使用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 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)

预分配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)

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

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

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

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

尝试改用a[0:1],它将返回单个项数组中a的第一个元素。

相关问题 更多 >