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.


Need Your Help

Are there any yuy2 splitter and decoder?

directshow

Are there are any free yuy2 splitter and/or decoder filters? I coulnd't find any on the web.

Confusion about nested routes in Rails 3, specifically autogenerated paths

ruby-on-rails ruby-on-rails-3

For each species, I have many datasets. For each dataset, I have many phenotypes. The datasets have names which, within a species, are primary keys. The species, too, have string primary keys (e.g....

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.