Cuando lo intento
numpy.newaxis
el resultado me da un marco gráfico de 2-d con eje x de 0 a 1. Sin embargo, cuando trato numpy.newaxis
de cortar un vector,
vector[0:4,]
[ 0.04965172 0.04979645 0.04994022 0.05008303]
vector[:, np.newaxis][0:4,]
[[ 0.04965172]
[ 0.04979645]
[ 0.04994022]
[ 0.05008303]]
¿Es lo mismo excepto que cambia un vector de fila a un vector de columna?
En general, ¿de qué sirve numpy.newaxis
y en qué circunstancias deberíamos usarlo?
python
numpy
multidimensional-array
array-broadcasting
numpy-ndarray
Yue Harriet Huang
fuente
fuente
except that it changes a row vector to a column vector?
El primer ejemplo no es un vector de fila. Ese es un concepto matlab. En python es solo un vector unidimensional sin concepto de fila o columna. Los vectores de fila o columna son bidimensionales, como el segundo ejemploRespuestas:
En pocas palabras,
numpy.newaxis
se usa para aumentar la dimensión de la matriz existente en una dimensión más , cuando se usa una vez . Así,La matriz 1D se convertirá en una matriz 2D
La matriz 2D se convertirá en una matriz 3D
La matriz 3D se convertirá en una matriz 4D
La matriz 4D se convertirá en una matriz 5D
y así..
Aquí hay una ilustración visual que muestra la promoción de una matriz 1D a matrices 2D.
Escenario 1 :
np.newaxis
puede ser útil cuando desea convertir explícitamente una matriz 1D en un vector de fila o un vector de columna , como se muestra en la imagen de arriba.Ejemplo:
Escenario-2 : cuando queremos hacer uso de la transmisión de numpy como parte de alguna operación, por ejemplo, al agregar algunas matrices.
Ejemplo:
Supongamos que desea agregar las siguientes dos matrices:
Si intenta agregarlos así, NumPy generará lo siguiente
ValueError
:En esta situación, puede usar
np.newaxis
para aumentar la dimensión de una de las matrices para que NumPy pueda transmitir .Ahora, agregue:
Alternativamente, también puede agregar un nuevo eje a la matriz
x2
:Ahora, agregue:
Nota : Observe que obtenemos el mismo resultado en ambos casos (pero uno es la transposición del otro).
Escenario-3 : Esto es similar al escenario-1. Pero, puede usar
np.newaxis
más de una vez para promover la matriz a dimensiones más altas. Tal operación a veces es necesaria para matrices de orden superior ( es decir, tensores ).Ejemplo:
Más información sobre np.newaxis vs np.reshape
newaxis
También se llama como un pseudo-índice que permite la adición temporal de un eje en una matriz múltiple.np.newaxis
usa el operador de corte para recrear la matriz mientras quenp.reshape
la forma a la disposición deseada (suponiendo que las dimensiones coincidan; y esto es imprescindible parareshape
que ocurra).Ejemplo
En el ejemplo anterior, insertamos un eje temporal entre el primer y el segundo eje de
B
(para usar la transmisión). Aquí se rellena un eje que faltanp.newaxis
para hacer que la operación de transmisión funcione.Consejo general : También puede usar
None
en lugar denp.newaxis
; Estos son, de hecho, los mismos objetos .PD: vea también esta excelente respuesta: newaxis vs rehape para agregar dimensiones
fuente
¿Qué es
np.newaxis
?El
np.newaxis
es solo un alias para la constante de PythonNone
, lo que significa que donde sea que usenp.newaxis
también podría usarNone
:Es más descriptivo si lees el código que usa en
np.newaxis
lugar deNone
.¿Cómo usarlo
np.newaxis
?El
np.newaxis
se usa generalmente con rebanado. Indica que desea agregar una dimensión adicional a la matriz. La posición de lanp.newaxis
representa donde quiero agregar dimensiones.En el primer ejemplo, uso todos los elementos de la primera dimensión y agrego una segunda dimensión:
El segundo ejemplo agrega una dimensión como primera dimensión y luego usa todos los elementos de la primera dimensión de la matriz original como elementos en la segunda dimensión de la matriz de resultados:
Del mismo modo, puede usar múltiples
np.newaxis
para agregar múltiples dimensiones:¿Hay alternativas a
np.newaxis
?Hay otra funcionalidad muy similar en NumPy:
np.expand_dims
que también se puede usar para insertar una dimensión:Pero dado que solo inserta
1
s en la matriz,shape
tambiénreshape
puede agregar estas dimensiones:La mayoría de las veces
np.newaxis
es la forma más fácil de agregar dimensiones, pero es bueno conocer las alternativas.Cuándo usar
np.newaxis
?En varios contextos es útil agregar dimensiones útiles:
Si los datos deben tener un número especificado de dimensiones. Por ejemplo, si desea usar
matplotlib.pyplot.imshow
para mostrar una matriz 1D.Si quieres que NumPy difunda matrices. Mediante la adición de una dimensión que podría conseguir, por ejemplo, la diferencia entre todos los elementos de un array:
a - a[:, np.newaxis]
. Esto funciona porque las operaciones NumPy transmiten comenzando con la última dimensión 1 .Para agregar una dimensión necesaria para que NumPy pueda transmitir matrices. Esto funciona porque cada dimensión de longitud 1 simplemente se transmite a la longitud de la dimensión 1 correspondiente de la otra matriz.
1 Si desea leer más sobre las reglas de transmisión, la documentación de NumPy sobre ese tema es muy buena. También incluye un ejemplo con
np.newaxis
:fuente
Comenzaste con una lista unidimensional de números. Una vez que lo usó
numpy.newaxis
, lo convirtió en una matriz bidimensional, que consta de cuatro filas de una columna cada una.Entonces podría usar esa matriz para la multiplicación de la matriz, o involucrarla en la construcción de una matriz 4 xn más grande.
fuente
newaxis
El objeto en la tupla de selección sirve para expandir las dimensiones de la selección resultante en una dimensión de unidad de longitud .No es solo la conversión de matriz de fila a matriz de columna.
Considere el siguiente ejemplo:
Ahora agreguemos una nueva dimensión a nuestros datos,
Puede ver que
newaxis
agregó la dimensión adicional aquí, x1 tenía dimensión (3,3) y X1_new tiene dimensión (3,1,3).Cómo nuestra nueva dimensión nos permite realizar diferentes operaciones:
Al agregar x1_new y x2, obtenemos:
Por lo tanto,
newaxis
no es solo la conversión de la matriz de fila a columna. Aumenta la dimensión de la matriz, lo que nos permite realizar más operaciones en ella.fuente
ndarray
en la terminología NumPy.