What does -1 Mean in Numpy Reshape?

NumPy is a Python library for numerical computing that provides efficient array operations. The numpy.reshape() function is used to change the shape of an array, and -1 serves as a placeholder for an automatically calculated dimension.

When reshaping arrays, you often know some dimensions but want NumPy to calculate others automatically. The -1 parameter tells NumPy to infer that dimension based on the array's total size and other specified dimensions.

How -1 Works in NumPy Reshape

The -1 dimension is calculated using the formula:

Unknown dimension = Total elements ÷ (Product of known dimensions)

For example, with 8 elements and shape (2, 2, -1): -1 = 8 ÷ (2 × 2) = 2

Example 1: Using -1 for Unknown Depth

Here we specify rows and columns, letting NumPy calculate the depth ?

import numpy as np

# Creating a 1D array with 8 elements
input_array = np.array([15, 16, 17, 18, 19, 20, 21, 22])

# Reshape to (2, 2, -1) - 2 rows, 2 columns, depth calculated automatically
output_array = input_array.reshape(2, 2, -1)
print(output_array)
print("Shape:", output_array.shape)
[[[15 16]
  [17 18]]

 [[19 20]
  [21 22]]]
Shape: (2, 2, 2)

Example 2: Using -1 for Unknown Columns

Let NumPy calculate the middle dimension ?

import numpy as np

input_array = np.array([15, 16, 17, 18, 19, 20, 21, 22])

# Reshape to (2, -1, 4) - 2 layers, middle dimension calculated, 4 columns
output_array = input_array.reshape(2, -1, 4)
print(output_array)
print("Shape:", output_array.shape)
[[[15 16 17 18]]

 [[19 20 21 22]]]
Shape: (2, 1, 4)

Example 3: Using -1 for Unknown Rows

Calculate the first dimension automatically ?

import numpy as np

input_array = np.array([15, 16, 17, 18, 19, 20, 21, 22])

# Reshape to (-1, 4, 2) - first dimension calculated, 4 rows, 2 columns
output_array = input_array.reshape(-1, 4, 2)
print(output_array)
print("Shape:", output_array.shape)
[[[15 16]
  [17 18]
  [19 20]
  [21 22]]]
Shape: (1, 4, 2)

Error: Multiple Unknown Dimensions

You can only use -1 once per reshape operation. Multiple -1 values cause an error ?

import numpy as np

input_array = np.array([15, 16, 17, 18, 19, 20, 21, 22])

try:
    # This will raise an error - can't have two unknown dimensions
    output_array = input_array.reshape(2, -1, -1)
except ValueError as e:
    print("Error:", e)
Error: can only specify one unknown dimension

Flattening Arrays with -1

The most common use of -1 is flattening arrays to 1D ?

import numpy as np

# 2D array
array_2d = np.array([[15, 16, 17], [18, 19, 20]])
flattened_2d = array_2d.reshape(-1)

# 3D array
array_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
flattened_3d = array_3d.reshape(-1)

print("Original 2D:", array_2d.shape)
print("Flattened 2D:", flattened_2d)
print("\nOriginal 3D:", array_3d.shape)
print("Flattened 3D:", flattened_3d)
Original 2D: (2, 3)
Flattened 2D: [15 16 17 18 19 20]

Original 3D: (2, 2, 2)
Flattened 3D: [1 2 3 4 5 6 7 8]

Common Use Cases

Use Case Shape Purpose
Flatten to 1D (-1,) Convert any array to 1D
Convert to rows (-1, n) Create matrix with n columns
Convert to columns (n, -1) Create matrix with n rows

Conclusion

The -1 parameter in NumPy's reshape() function automatically calculates unknown dimensions, making array reshaping more flexible. Use it for flattening arrays or when you know some dimensions but want NumPy to infer others. Remember: only one -1 is allowed per reshape operation.

Updated on: 2026-03-27T12:53:56+05:30

623 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements