What is NumPy's 'np.newaxis' and How to Use It
Understanding 'np.newaxis'
NumPy's 'np.newaxis', also known as 'None', is a pseudo-index used to temporarily add an axis to an array. When used once, it increases the dimension of the array by one. For example, a 1D array becomes a 2D array, a 2D array becomes a 3D array, and so on.
Scenarios for Using 'np.newaxis'
Scenario 1: Creating Row/Column Vectors from 1D Arrays
'np.newaxis' can be used to explicitly convert a 1D array into a row vector (by inserting an axis along the first dimension) or a column vector (by inserting an axis along the second dimension).
Scenario 2: Enabling NumPy Broadcasting
'np.newaxis' becomes useful when performing operations involving NumPy broadcasting. For instance, consider adding two arrays with shapes '(5,)' and '(3,)'. NumPy will raise an error due to incompatible shapes. By using 'np.newaxis' to increase the dimension of one array, broadcasting can be enabled to perform the operation.
Scenario 3: Promoting Arrays to Higher Dimensions
'np.newaxis' can be used multiple times to promote arrays to higher dimensions, which may be necessary for higher order arrays (tensors).
Usage Examples
To use 'np.newaxis', insert it into the slicing expression. For example:
# Create a row vector from a 1D array
x = np.arange(4)
x_row_vector = x[np.newaxis, :]
To enable broadcasting:
# Add a 1D array to a 2D array
x1 = np.array([1, 2, 3, 4, 5])
x2 = np.array([5, 4, 3])
x1_new = x1[:, np.newaxis] # Insert axis for broadcasting
result = x1_new x2
Alternative: 'np.expand_dims'
'np.expand_dims' is an alternative to 'np.newaxis' that provides an intuitive 'axis' kwarg to specify the insertion point of the new axis.
Additional Notes
Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.
Copyright© 2022 湘ICP备2022001581号-3