Problem Formulation
Given a CSV file (e.g., stored in the file with name 'my_file.csv').
INPUT: file 'my_file.csv'9,8,7 6,5,4 3,2,1

Challenge: How to convert it to a NumPy Array?
β₯οΈ Info: Are you AI curious but you still have to create real impactful projects? Join our official AI builder club on Skool (only $5): SHIP! - One Project Per Month
OUTPUT: 2D NumPy Array[[9. 8. 7.] [6. 5. 4.] [3. 2. 1.]]
Method 1: np.loadtxt()

np.loadtxt()
You can convert a CSV file to a NumPy array simply by calling np.loadtxt() with two arguments: the filename and the delimiter string. For example, the expression np.loadtxt('my_file.csv', delimiter=',') returns a NumPy array from the 'my_file.csv' with delimiter symbols ','.
Here’s an example:
import numpy as np
array = np.loadtxt('my_file.csv', delimiter=',')
print(array)Output:
[[9. 8. 7.]
[6. 5. 4.]
[3. 2. 1.]]Method 2: np.loadtxt() with Header

np.loadtxt() + header
You can convert a CSV file with first-line header to a NumPy array by calling np.loadtxt() with three arguments: the filename, skiprows=1 to skip the first line (header), and the delimiter string. For example, the expression np.loadtxt('my_file.csv', skiprows=1, delimiter=',') returns a NumPy array from the 'my_file.csv' with delimiter symbols ',' while skipping the first line.

skiprows argument of the np.loadtxt() function.Here’s an example:
import numpy as np
array = np.loadtxt('my_file.csv', skiprows=1, delimiter=',')
print(array)Output:
[[9. 8. 7.]
[6. 5. 4.]
[3. 2. 1.]]Method 3: CSV Reader

CSV Reader
To convert a CSV file 'my_file.csv' into a list of lists in Python, use the csv.reader(file_obj) method to create a CSV file reader. Then convert the resulting object to a list using the list() constructor. As a final step, you can convert the nested list to a NumPy array by using the np.array(list) constructor.
Here’s an example:
import numpy as np
import csv
csv_filename = 'my_file.csv'
with open(csv_filename) as f:
reader = csv.reader(f)
lst = list(reader)
print(lst)The output is the list of lists:
[['9', '8', '7'], ['6', '5', '4'], ['3', '2', '1']]Now, if you need to convert it to a NumPy array, you can simply use the np.array() function on the newly-created list like so:
array = np.array(lst) print(array)
Output:
[['9' '8' '7']
['6' '5' '4']
['3' '2' '1']]π Related Tutorial: How to Convert CSV to List of Lists in Python
Method 4: np.genfromtxt()

np.genfromtxt()
You can convert a CSV file to a NumPy array simply by calling np.genfromtxt() with two arguments: the filename and the delimiter string. For example, the expression np.genfromtxt('my_file.csv', delimiter=',') returns a NumPy array from the 'my_file.csv' with delimiter symbol ','.
Here’s an example:
import numpy as np
array = np.loadtxt('my_file.csv', delimiter=',')
print(array)Output:
[[9. 8. 7.]
[6. 5. 4.]
[3. 2. 1.]]Method 5: Pandas read_csv() and df.to_numpy()

read_csv() and df.to_numpy()
A quick and efficient way to read a CSV to a NumPy array is to combine Pandas’ pd.read_csv() function to read a given CSV file to a DataFrame with the df.to_numpy() function to convert the Pandas DataFrame to a NumPy array.
Here’s an example:
import pandas as pd
df = pd.read_csv('my_file.csv', header=None)
array = df.to_numpy()
print(array)
Output:
[[9 8 7]
[6 5 4]
[3 2 1]]π Related Tutorial: 17 Ways to Read a CSV File to a Pandas DataFrame
Summary
We have seen five ways to convert a CSV file to a 2D NumPy array:
- Method 1:
np.loadtxt() - Method 2:
np.loadtxt()with Header - Method 3: CSV Reader
- Method 4:
np.genfromtxt() - Method 5: Pandas
read_csv()anddf.to_numpy()
Our preferred way is np.loadtxt() for its simplicity and Pandas for its extensibility.
More Python CSV Conversions
π Learn More: I have compiled an “ultimate guide” on the Finxter blog that shows you the best method, respectively, to convert a CSV file to JSON, Excel, dictionary, Parquet, list, list of lists, list of tuples, text file, DataFrame, XML, NumPy array, and list of dictionaries.