J'ai un tableau numpy contenant:
[1, 2, 3]
Je souhaite créer un tableau contenant:
[1, 2, 3, 1]
Autrement dit, je veux ajouter le premier élément à la fin du tableau.
J'ai essayé l'évidence:
np.concatenate((a, a[0]))
Mais je reçois une erreur disant ValueError: arrays must have same number of dimensions
Je ne comprends pas cela - les tableaux ne sont que des tableaux 1d.
np.insert([1,2,3], 3, 1)
Réponses:
append()
crée un nouveau tableau qui peut être l'ancien tableau avec l'élément ajouté.Je pense qu'il est plus normal d'utiliser la bonne méthode pour ajouter un élément:
la source
a
tableau. Cependant, il renvoie un nouveau tableau modifié. Donc, si unea
modification est nécessaire, ellea = numpy.append(a,a[0])
doit être utilisée.np.append
utilisenp.concatenate
. Il s'assure simplement que l'addon a une dimension. L'erreur OP était lea[0]
a 0 dimensions.a.append(1)
,a.add(1)
ou même quelque chose d'analogue à des listes commea + [1]
Lorsque vous ajoutez une seule fois ou une fois de temps en temps, l'utilisation
np.append
de votre tableau devrait être correcte. L'inconvénient de cette approche est que de la mémoire est allouée à un tout nouveau tableau à chaque fois qu'il est appelé. Lors de la croissance d'un tableau pour une quantité importante d'échantillons, il serait préférable de pré-allouer le tableau (si la taille totale est connue) ou de l'ajouter à une liste et de le convertir en tableau par la suite.Utilisation
np.append
:Utilisation de la conversion de liste python en tableau par la suite:
Tableau numpy pré-alloué:
Lorsque la taille finale n'est pas connue, la pré-allocation est difficile, j'ai essayé de pré-allouer par tranches de 50 mais cela ne s'est pas rapproché de l'utilisation d'une liste.
la source
a[0]
n'est pas un tableau, c'est le premier élément dea
et n'a donc pas de dimensions.Essayez d'utiliser à la
a[0:1]
place, qui retournera le premier élément de l'a
intérieur d'un seul tableau d'éléments.la source
Essaye ça:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html
concatenate a besoin que les deux éléments soient des tableaux numpy; cependant, un [0] n'est pas un tableau. Voilà pourquoi cela ne fonctionne pas.
la source
np.concatenate((a, [a[0]]))
. De toute façon, la liste sera automatiquement promue dans un type de tableau, ce qui vous évitera de taper.Cette commande,
ne modifie pas le
a
tableau. Cependant, il renvoie un nouveau tableau modifié. Donc, si unea
modification est nécessaire, les éléments suivants doivent être utilisés.la source
la source
Cela peut être un peu excessif, mais j'utilise toujours la
np.take
fonction pour toute indexation enveloppante:la source
Disons
a=[1,2,3]
et vous voulez que ce soit le cas[1,2,3,1]
.Vous pouvez utiliser la fonction d'ajout intégrée
Ici, 1 est un entier, il peut s'agir d'une chaîne et il peut appartenir ou non aux éléments du tableau. Impressions:
[1,2,3,1]
la source
Si vous souhaitez ajouter un élément, utilisez
append()
a = numpy.append(a, 1)
dans ce cas, ajoutez le 1 à la fin du tableauSi vous souhaitez insérer un élément, utilisez
insert()
a = numpy.insert(a, index, 1)
dans ce cas, vous pouvez placer le 1 où vous le souhaitez, en utilisant index pour définir la position dans le tableau.la source