Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reading non-uniform data from file into array with NumPy

Suppose I have a text file that looks like this:

33 3
46 12
23 10 23 11 23 12 23 13 23 14 23 15 23 16 24 10 24 11 24 12 24 13 24 14 24 15 24 16 25 14 25 15 25 16 26 16 27 16 28 16 29 16
33 17 33 18 33 19 34 17 34 18 34 19 35 17 35 18 35 19 36 19
41 32 41 33 42 32 42 33

I would like to read each line into a separate array of integers, as in (pseudo code):

for line in textfile:  
    currentArray = firstLine  
    do stuff with currentArray

where in the first iteration, currentArray would be

array([33, 3])

and in the second iteration, currentArray would be

array([46, 12])

until the last iteration, when currentArray would be

array([41, 32, 41, 33, 42, 32, 42, 33])

Basically, I would like to have the functionality of the numpy function loadtxt:

currentArray = loadtxt('scienceVertices.txt', usecols=() )

Except instead of usecols, being able to specify the row, e.g.,

currentArray = loadtxt('scienceVertices.txt', userows=(line) )

like image 836
lookitsmarc Avatar asked Feb 11 '11 21:02

lookitsmarc


1 Answers

Here's a one-liner:

arrays = [np.array(map(int, line.split())) for line in open('scienceVertices.txt')]

arrays is a list of numpy arrays.

like image 74
Paul Avatar answered Oct 13 '22 11:10

Paul