I got confuse between two Numpy dimension expand code.
First code is X[:, np.newaxis]
.
Second code is X[:, np.newaxis, :]
.
I ran this code on Jupyter, But it returns same shape and result.
What is the difference?
CodePudding user response:
Refer numpy documentation for newaxis. https://numpy.org/doc/stable/reference/constants.html#numpy.newaxis
x = np.arange(3)
x[newaxis, :] is equivalent to x[newaxis] and x[None] Any dimension after np.newaxis
is still present in the resulting array, even if not explicitly denoted by a slice :
.
x[np.newaxis, :].shape
#(1, 3)
x[np.newaxis].shape
#(1, 3)
x[None].shape
#(1, 3)
x[:, np.newaxis].shape
#(3, 1)
Hence in your case
X[:,np.newaxis] is X[:, np.newaxis, :]
#True
PS- I think you got confused by ellipses...
and np.newaxis
.
X[...,np.newaxis].shape
#(10,2,1)
# newaxis is introduced after all the previous dimensions
X[:, np.newaxis].shape
#(10,1,2)
# newaxis is introduced at 1st index or 2nd position.