J'ai le tableau numpy suivant
import numpy as np
X = np.array([[5.], [4.], [3.], [2.], [1.]])
Je veux insérer [6.]
au début . J'ai essayé:
X = X.insert(X, 0)
comment puis-je insérer dans X?
numpy a une fonction insert
accessible via np.insert
avec documentation .
Vous voudrez l'utiliser dans ce cas comme suit:
X = np.insert(X, 0, 6., axis=0)
le premier argument X
spécifie l'objet dans lequel insérer.
Le deuxième argument 0
spécifie où.
Le troisième argument 6.
spécifie ce qui doit être inséré.
Le quatrième argument axis=0
spécifie que l'insertion doit avoir lieu à la position 0
pour chaque colonne. Nous aurions pu choisir des lignes mais votre X est un vecteur de colonnes, alors j'ai pensé que nous resterions cohérents.
Vous pouvez essayer ce qui suit
X = np.append(arr = np.array([[6]]), values = X, axis= 0)
Au lieu d'insérer 6 dans le X existant, ajoutons 6 par X.
Donc, le premier argument arr
est un tableau numpy de la scalaire 6, le deuxième argument est votre tableau à ajouter, et le troisième est l'endroit où nous voulons ajouter
Je sais que c'est assez ancien, mais une solution courte consiste à utiliser des astuces de découpage numpy:
np.r_[[[6.]], X]
Si vous avez besoin de le faire dans une deuxième dimension, vous pouvez utiliser np.c_.
Je pense que c'est la version la moins encombrée que je puisse penser
Je viens d'écrire du code qui effectue cette opération environ 100 000 fois. Je devais donc trouver le moyen le plus rapide de le faire. Je ne suis en aucun cas un expert en efficacité du code, mais je pourrais comprendre certaines choses en utilisant la fonction magique %%timeit
dans un cahier Jupyter.
Mes trouvailles:
np.concatenate(([number],array))
nécessite le moins de temps possible. Appelons cela une fois.
np.asarray([number] + list(array))
arrive à ~ 2x.
np.r_[number,array]
is ~ 4x.
np.insert(array,0,number)
semble être la pire option ici à 8x.
Je ne sais pas du tout comment cela change avec la taille de array
(j'ai utilisé un tableau shape (15,)) et la plupart des options que j'ai suggérées ne fonctionnent que si vous voulez mettre le nombre au début. Cependant, puisque c’est ce que la question demande, je pense que c’est un bon endroit pour faire ces comparaisons.