Open In App

Pandas Dataframe.to_numpy() - Convert dataframe to Numpy array

Last Updated : 12 Jun, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

to_numpy() method allows you to convert a Pandas DataFrame into a NumPy array, enabling efficient numerical operations, faster computations, and smooth interoperability with libraries that require NumPy arrays. Example:

Python
import pandas as pd
df = pd.DataFrame(
	[[1, 2, 3],
	[4, 5, 6],
	[7, 8, 9],
	[10, 11, 12]],
	columns=['a', 'b', 'c'])
a = df.to_numpy()

print(type(a),a)

Output
<class 'numpy.ndarray'> [[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]

Syntax

DataFrame.to_numpy(dtype=None, copy=False)

Parameters:

  • dtype: (optional) Data type to force for the resulting NumPy array (e.g., float32, str).
  • copy: (bool, default=False) Whether to return a copy of the data or a view. Setting it to True guarantees a copy.

Returns: A NumPy array representation of the DataFrame's values, excluding index and column labels.

Examples

Example 1: Here, we convert only selected columns ('a' and 'c') from the DataFrame into a NumPy array. This is useful when you want to work with only a subset of columns.

Python
import pandas as pd
df = pd.DataFrame(
	[[1, 2, 3],
	[4, 5, 6],
	[7, 8, 9],
	[10, 11, 12]],
	columns=['a', 'b', 'c'])

a = df[['a', 'c']].to_numpy()
print(type(a),a)

Output
<class 'numpy.ndarray'> [[ 1  3]
 [ 4  6]
 [ 7  9]
 [10 12]]

Explanation: df[['a', 'c']] extracts only columns 'a' and 'c'. The .to_numpy() method then converts this selection into a 2D NumPy array containing just the values from those columns, without row indices or column headers.

Example 2: This example shows how .to_numpy() handles DataFrames with mixed numeric types. The resulting NumPy array will upcast data to a common type to accommodate all values (e.g., float).

Python
import numpy as np
import pandas as pd
df = pd.DataFrame(
    [[1, 2, 3],
     [4, 5, 6.5],
     [7, 8.5, 9],
     [10, 11, 12]],
    columns=['a', 'b', 'c']
)

a = df.to_numpy()
print(a.dtype, a)

Output
float64 [[ 1.   2.   3. ]
 [ 4.   5.   6.5]
 [ 7.   8.5  9. ]
 [10.  11.  12. ]]

Explanation: The DataFrame has both integers and floats like 6.5 and 8.5 . When converted to a NumPy array, Pandas upcasts all values to a common type (float64).

Example 3: In this example, we convert the entire DataFrame to a NumPy array and explicitly set the data type to float32. This can help save memory or match data types required by other libraries.

Python
import pandas as pd
df = pd.DataFrame(
	[[1, 2, 3],
	[4, 5, 6],
	[7, 8, 9],
	[10, 11, 12]],
	columns=['a', 'b', 'c'])

a = df.to_numpy(dtype='float32')
print(a.dtype,a)

Output
float32 [[ 1.  2.  3.]
 [ 4.  5.  6.]
 [ 7.  8.  9.]
 [10. 11. 12.]]

Explanation: dtype parameter forces conversion of the NumPy array to float32, converting all values including integers to 32-bit floats.

Example 4: This example shows how to convert a DataFrame containing mixed data types (integers, strings, and floats) into a NumPy array of strings

Python
import pandas as pd

df = pd.DataFrame(
    [[1, 'apple', 3.5],
     [4, 'banana', 6],
     [7, 'cherry', 9.1],
     [10, 'date', 12]],
    columns=['id', 'fruit', 'value']
)

a = df.to_numpy(dtype='str')
print(a.dtype,a)

Output
<U6 [['1' 'apple' '3.5']
 ['4' 'banana' '6.0']
 ['7' 'cherry' '9.1']
 ['10' 'date' '12.0']]

Explanation: dtype='str' converts all values to Unicode strings e.g., <U6 means length 6 , turning numbers like 6 and 12 into '6.0' and '12.0' for consistent string typing.


Next Article
Practice Tags :

Similar Reads