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.newaxisde 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.newaxisy 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.newaxisse 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.newaxispuede 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.newaxispara 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.newaxismá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
newaxisTambién se llama como un pseudo-índice que permite la adición temporal de un eje en una matriz múltiple.np.newaxisusa el operador de corte para recrear la matriz mientras quenp.reshapela forma a la disposición deseada (suponiendo que las dimensiones coincidan; y esto es imprescindible parareshapeque 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.newaxispara hacer que la operación de transmisión funcione.Consejo general : También puede usar
Noneen 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.newaxises solo un alias para la constante de PythonNone, lo que significa que donde sea que usenp.newaxistambién podría usarNone:Es más descriptivo si lees el código que usa en
np.newaxislugar deNone.¿Cómo usarlo
np.newaxis?El
np.newaxisse usa generalmente con rebanado. Indica que desea agregar una dimensión adicional a la matriz. La posición de lanp.newaxisrepresenta 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.newaxispara agregar múltiples dimensiones:¿Hay alternativas a
np.newaxis?Hay otra funcionalidad muy similar en NumPy:
np.expand_dimsque también se puede usar para insertar una dimensión:Pero dado que solo inserta
1s en la matriz,shapetambiénreshapepuede agregar estas dimensiones:La mayoría de las veces
np.newaxises 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.imshowpara 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
newaxisEl 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
newaxisagregó 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,
newaxisno 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
ndarrayen la terminología NumPy.