将元素插入到numpy数组中

时间:2014-02-13 17:27:16

标签: python arrays numpy

列表有一个非常简单的方法来插入元素:

a = [1,2,3,4]
a.insert(2,66)
print a
[1, 2, 66, 3, 4]

对于我可以做的numpy数组:

a = np.asarray([1,2,3,4])
a_l = a.tolist()
a_l.insert(2,66)
a = np.asarray(a_l)
print a
[1 2 66 3 4]

但这非常令人费解。

insert数组是否等效numpy

3 个答案:

答案 0 :(得分:14)

您可以使用numpy.insert,但与list.insert不同,它会返回一个新数组,因为NumPy中的数组具有固定大小。

>>> import numpy as np
>>> a = np.asarray([1,2,3,4])
>>> np.insert(a, 2, 66)
array([ 1,  2, 66,  3,  4])

答案 1 :(得分:6)

如果您只想在后续索引中插入项目,作为一种更优化的方式,您可以使用np.concatenate()将数组的切片与预期项目连接起来:

例如,在这种情况下,你可以这样做:

In [21]: np.concatenate((a[:2], [66], a[2:]))
Out[21]: array([ 1,  2, 66,  3,  4])

基准测试(比insert快5倍):

In [19]: %timeit np.concatenate((a[:2], [66], a[2:]))
1000000 loops, best of 3: 1.43 us per loop

In [20]: %timeit np.insert(a, 2, 66)
100000 loops, best of 3: 6.86 us per loop

这是一个更大阵列的基准测试(仍然快5倍):

In [22]: a = np.arange(1000)

In [23]: %timeit np.concatenate((a[:300], [66], a[300:]))
1000000 loops, best of 3: 1.73 us per loop                                              

In [24]: %timeit np.insert(a, 300, 66)
100000 loops, best of 3: 7.72 us per loop

答案 2 :(得分:0)

要将元素添加到numpy数组中,可以使用方法'append'向其传递数组和要添加的元素。例如:

import numpy as np dummy = [] dummy = np.append(dummy,12)

这将创建一个空数组,并在其中添加数字“ 12”