Pandas Dataframe.to_numpy() - Convert dataframe to Numpy array
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:
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)
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.
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)
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).
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)
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.
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)
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
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)
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.