web-dev-qa-db-fra.com

Insérer un élément dans un tableau numpy

Les listes ont une méthode très simple pour insérer des éléments:

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

Pour un tableau numpy je pourrais faire:

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]

mais c'est très compliqué.

Existe-t-il un équivalent insert pour les tableaux numpy?

8
Gabriel

Vous pouvez utiliser numpy.insert , bien que contrairement à list.insert, il retourne un nouveau tableau car les tableaux de NumPy ont une taille fixe.

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

Si vous souhaitez simplement insérer des éléments dans des index conséquents, utilisez plutôt np.concatenate() pour concaténer des tranches du tableau avec les éléments souhaités:

Par exemple, dans ce cas, vous pouvez faire:

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

Indice de référence (5 fois plus vite que insert):

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

Et voici un repère avec des tableaux plus grands (toujours 5 fois plus vite):

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
6
Kasrâmvd

Pour ajouter des éléments à un tableau numpy, vous pouvez utiliser la méthode 'append' en lui transmettant le tableau et l'élément à ajouter. Par exemple:

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

cela créera un tableau vide et y ajoutera le nombre '12'

0
kiran