# load csv into 2D matrix with numpy for plotting

Given this CSV file:

"A","B","C","D","E","F","timestamp" 611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291111964948E12 611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291113113366E12 611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291120650486E12

I simply want to load it as a matrix/ndarray with 3 rows and 7 columns. However, for some reason, all I can get out of numpy is an ndarray with 3 rows (one per line) and no columns.

r = np.genfromtxt(fname,delimiter=',',dtype=None, names=True) print r print r.shape [ (611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291111964948.0) (611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291113113366.0) (611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291120650486.0)] (3,)

I can manually iterate and hack it into the shape I want, but this seems silly. I just want to load it as a proper matrix so I can slice it across different dimensions and plot it, just like in matlab.

## Answers

Pure numpy

numpy.loadtxt(open("test.csv","rb"),delimiter=",",skiprows=1)

Check out the loadtxt documentation.

You can also use python's csv module:

import csv import numpy reader=csv.reader(open("test.csv","rb"),delimiter=',') x=list(reader) result=numpy.array(x).astype('float')

You will have to convert it to your favorite numeric type. I guess you can write the whole thing in one line:

result=numpy.array(list(csv.reader(open("test.csv","rb"),delimiter=','))).astype('float')

**Added Hint:**

You could also use pandas.io.parsers.read_csv and get the associated numpy array which can be faster.