Quand j'essaye
numpy.newaxis
le résultat me donne un cadre de tracé 2D avec l'axe des x de 0 à 1. Cependant, lorsque j'essaie d'utiliser numpy.newaxis
pour découper un vecteur,
vector[0:4,]
[ 0.04965172 0.04979645 0.04994022 0.05008303]
vector[:, np.newaxis][0:4,]
[[ 0.04965172]
[ 0.04979645]
[ 0.04994022]
[ 0.05008303]]
Est-ce la même chose sauf que cela change un vecteur ligne en vecteur colonne?
En général, à quoi sert-il numpy.newaxis
et dans quelles circonstances devons-nous l'utiliser?
python
numpy
multidimensional-array
array-broadcasting
numpy-ndarray
Yue Harriet Huang
la source
la source
except that it changes a row vector to a column vector?
Le premier exemple n'est pas un vecteur de ligne. C'est un concept matlab. En python, c'est juste un vecteur à une dimension sans concept de ligne ou de colonne. Les vecteurs de ligne ou de colonne sont à 2 dimensions, comme le deuxième exempleRéponses:
En termes simples,
numpy.newaxis
est utilisé pour augmenter la dimension du tableau existant d' une dimension supplémentaire , lorsqu'il est utilisé une fois . Donc,Le tableau 1D deviendra un tableau 2D
Le tableau 2D deviendra un tableau 3D
Le tableau 3D deviendra un tableau 4D
La matrice 4D deviendra une matrice 5D
etc..
Voici une illustration visuelle qui représente la promotion d'un tableau 1D vers des tableaux 2D.
Scénario-1 :
np.newaxis
peut être utile lorsque vous souhaitez convertir explicitement un tableau 1D en vecteur de ligne ou en vecteur de colonne , comme illustré dans l'image ci-dessus.Exemple:
Scénario-2 : Lorsque nous voulons utiliser la diffusion numpy dans le cadre d'une opération, par exemple lors de l' ajout de certains tableaux.
Exemple:
Supposons que vous souhaitiez ajouter les deux tableaux suivants:
Si vous essayez de les ajouter comme ça, NumPy soulèvera les éléments suivants
ValueError
:Dans cette situation, vous pouvez utiliser
np.newaxis
pour augmenter la dimension de l'un des tableaux afin que NumPy puisse diffuser .Maintenant, ajoutez:
Vous pouvez également ajouter un nouvel axe au tableau
x2
:Maintenant, ajoutez:
Remarque : Observez que nous obtenons le même résultat dans les deux cas (mais l'un étant la transposition de l'autre).
Scénario-3 : Ceci est similaire au scénario-1. Mais vous pouvez en utiliser
np.newaxis
plusieurs pour promouvoir le tableau à des dimensions plus élevées. Une telle opération est parfois nécessaire pour les tableaux d'ordre supérieur ( c'est-à-dire les tenseurs ).Exemple:
Plus d'informations sur np.newaxis vs np.reshape
newaxis
est également appelé pseudo-index qui permet l'ajout temporaire d'un axe dans un multiarray.np.newaxis
utilise l'opérateur de découpage pour recréer le tableau tout ennp.reshape
remodelant le tableau à la disposition souhaitée (en supposant que les dimensions correspondent; et cela est indispensable pour quereshape
cela se produise).Exemple
Dans l'exemple ci-dessus, nous avons inséré un axe temporaire entre les premier et deuxième axes de
B
(pour utiliser la diffusion). Un axe manquant est rempli icinp.newaxis
pour faire fonctionner l' opération de diffusion .Conseil général : vous pouvez également utiliser
None
à la place denp.newaxis
; Ce sont en fait les mêmes objets .PS Voir également cette excellente réponse: newaxis vs remodeler pour ajouter des dimensions
la source
Qu'est-ce que c'est
np.newaxis
?Le
np.newaxis
est juste un alias pour la constante PythonNone
, ce qui signifie que partout où vous l'utilisez,np.newaxis
vous pouvez également utiliserNone
:C'est juste plus descriptif si vous lisez du code qui utilise
np.newaxis
au lieu deNone
.Comment utiliser
np.newaxis
?Le
np.newaxis
est généralement utilisé avec le tranchage. Cela indique que vous souhaitez ajouter une dimension supplémentaire au tableau. La position dunp.newaxis
représente où je veux ajouter des dimensions.Dans le premier exemple, j'utilise tous les éléments de la première dimension et j'ajoute une seconde dimension:
Le deuxième exemple ajoute une dimension comme première dimension, puis utilise tous les éléments de la première dimension du tableau d'origine comme éléments de la deuxième dimension du tableau de résultat:
De même, vous pouvez utiliser plusieurs
np.newaxis
pour ajouter plusieurs dimensions:Existe-t-il des alternatives
np.newaxis
?Il existe une autre fonctionnalité très similaire dans NumPy:,
np.expand_dims
qui peut également être utilisée pour insérer une dimension:Mais étant donné qu'il insère simplement
1
s dans le,shape
vous pouvez égalementreshape
le tableau pour ajouter ces dimensions:La plupart du temps,
np.newaxis
c'est le moyen le plus simple d'ajouter des dimensions, mais il est bon de connaître les alternatives.Quand l'utiliser
np.newaxis
?Dans plusieurs contextes, l'ajout de dimensions est utile:
Si les données doivent avoir un nombre spécifié de dimensions. Par exemple, si vous souhaitez utiliser
matplotlib.pyplot.imshow
pour afficher un tableau 1D.Si vous souhaitez que NumPy diffuse des tableaux. En ajoutant une dimension , vous pouvez par exemple obtenir la différence entre tous les éléments d'un tableau:
a - a[:, np.newaxis]
. Cela fonctionne car les opérations NumPy sont diffusées en commençant par la dernière dimension 1 .Pour ajouter une dimension nécessaire pour que NumPy puisse diffuser des tableaux. Cela fonctionne car chaque dimension de longueur 1 est simplement diffusée à la longueur de la dimension 1 correspondante de l'autre tableau.
1 Si vous voulez en savoir plus sur les règles de diffusion, la documentation NumPy sur ce sujet est très bonne. Il comprend également un exemple avec
np.newaxis
:la source
Vous avez commencé avec une liste unidimensionnelle de nombres. Une fois que vous l'avez utilisé
numpy.newaxis
, vous l'avez transformé en une matrice à deux dimensions, composée de quatre lignes d'une colonne chacune.Vous pouvez ensuite utiliser cette matrice pour la multiplication matricielle ou l'impliquer dans la construction d'une matrice 4 xn plus grande.
la source
newaxis
objet dans le tuple de sélection sert à étendre les dimensions de la sélection résultante d' une dimension de longueur unitaire .Il ne s'agit pas simplement de convertir une matrice de lignes en matrice de colonnes.
Prenons l'exemple ci-dessous:
Ajoutons maintenant une nouvelle dimension à nos données,
Vous pouvez voir que l'
newaxis
ajout de la dimension supplémentaire ici, x1 avait la dimension (3,3) et X1_new a la dimension (3,1,3).Comment notre nouvelle dimension nous permet d'effectuer différentes opérations:
En ajoutant x1_new et x2, nous obtenons:
Ainsi, il
newaxis
n'y a pas que la conversion de ligne en matrice de colonnes. Il augmente la dimension de la matrice, nous permettant ainsi de faire plus d'opérations sur elle.la source
ndarray
terminologie NumPy.