askvity

How to convert matrix to array in Python?

Published in NumPy Array Conversion 4 mins read

To convert a matrix or a multi-dimensional NumPy structure into a standard Python array (often meaning a one-dimensional NumPy array), you typically use functions provided by the NumPy library. The most common methods involve flattening the matrix into a single row or column of values.

Understanding Matrix and Array in Python (NumPy)

In the context of scientific computing with Python, especially using the popular NumPy library, the term "matrix" often refers to a 2-dimensional structure represented by a NumPy array (ndarray) object. There is also a specific, but now less recommended, numpy.matrix class. Converting a "matrix" to an "array" usually means transforming this 2D (or higher) structure into a 1D ndarray.

Methods to Convert Matrix to 1D Array

NumPy provides several convenient methods to flatten a multi-dimensional array (like a matrix) into a one-dimensional array.

Using numpy.ravel()

One of the most direct ways, as highlighted in the reference, is using the numpy.ravel() function or the .ravel() method of a NumPy array.

  • ravel() returns a flattened view of the original array whenever possible. This means changes to the flattened array might affect the original array, and it's generally more memory-efficient as it avoids creating a copy unless necessary.
  • According to the reference, numpy.ravel() "is used to flatten the whole array into one and continuous shape."

Example:

import numpy as np

# Create a 2x3 matrix (as a NumPy array)
matrix = np.array([[1, 2, 3],
                   [4, 5, 6]])

# Use ravel() to flatten it into a 1D array
flat_array_ravel = matrix.ravel()

print("Original Matrix:")
print(matrix)
print("\nFlattened Array (using ravel()):")
print(flat_array_ravel)

# Check the shape of the result
print("\nShape of flattened array:", flat_array_ravel.shape)

Output:

Original Matrix:
[[1 2 3]
 [4 5 6]]

Flattened Array (using ravel()):
[1 2 3 4 5 6]

Shape of flattened array: (6,)

Using .flatten()

Another common method is the .flatten() method of a NumPy array.

  • .flatten() always returns a copy of the original array, flattened into one dimension.
  • Since it returns a copy, changes made to the flattened array will not affect the original array.

Example:

import numpy as np

# Create a 3x2 matrix (as a NumPy array)
matrix = np.array([[10, 11],
                   [12, 13],
                   [14, 15]])

# Use flatten() to get a flattened copy
flat_array_flatten = matrix.flatten()

print("Original Matrix:")
print(matrix)
print("\nFlattened Array (using flatten()):")
print(flat_array_flatten)
print("\nShape of flattened array:", flat_array_flatten.shape)

Output:

Original Matrix:
[[10 11]
 [12 13]
 [14 15]]

Flattened Array (using flatten()):
[10 11 12 13 14 15]

Shape of flattened array: (6,)

Using .reshape(-1)

Reshaping the array to (-1) is another very common and concise way to flatten it.

  • The -1 argument tells NumPy to automatically calculate the dimension size based on the array's total number of elements.
  • reshape(-1) often returns a view, similar to ravel(), when possible, but can return a copy if the memory layout requires it.

Example:

import numpy as np

# Create a 2x2 matrix
matrix = np.array([[1, 2],
                   [3, 4]])

# Use reshape(-1) to flatten it
flat_array_reshape = matrix.reshape(-1)

print("Original Matrix:")
print(matrix)
print("\nFlattened Array (using reshape(-1)):")
print(flat_array_reshape)
print("\nShape of flattened array:", flat_array_reshape.shape)

Output:

Original Matrix:
[[1 2]
 [3 4]]

Flattened Array (using reshape(-1)):
[1 2 3 4]

Shape of flattened array: (4,)

Summary Table

Here's a quick comparison of the common flattening methods:

Method Returns Memory Usage Speed Primary Use Case
ravel() View (if possible), otherwise Copy Efficient Usually Fastest Getting a flattened array, potentially for in-place modification (use with caution)
.flatten() Always Copy Less Efficient for large arrays Slightly Slower Getting a distinct copy of the flattened array
.reshape(-1) View (if possible), otherwise Copy Efficient Fast Concise way to flatten, often used in array manipulations

Choose the method that best suits your needs regarding whether you need a copy or a view and performance considerations. For simple conversion to a 1D array, all methods effectively achieve the result.

Related Articles