En Mon, 29 Sep 2008 19:04:18 -0300, Ivan Reborin <[EMAIL PROTECTED]> escribió:

1. Multi dimensional arrays - how do you load them in python
For example, if I had:
-------
1 2 3
4 5 6
7 8 9

10 11 12
13 14 15
16 17 18
-------
with "i" being the row number, "j" the column number, and "k" the ..
uhmm, well, the "group" number, how would you load this ?

I agree that using NumPy is the way to go if you're going to do lots of array calculations. But a plain Python code would look like this (more comprehensible than other posted versions, I hope):

--- begin code ---
def read_group(fin, rows_per_group):
    rows = []
    for i in range(rows_per_group):
        line = fin.readline()
        row = [float(x) for x in line.split()]
        rows.append(row)
    fin.readline() # skip blank line
    return rows

# simulate a file using a string instead
# actual code would use: fin = open(filename)

from StringIO import StringIO
fin = StringIO("""1 2 3
4 5 6
7 8 9

10 11 12
13 14 15
16 17 18
""")

# read 2 groups of 3 lines each
matrix = [read_group(fin, 3) for k in range(2)]
print matrix
--- end code ---

A more compact version of read_group (collapsing all rows.append onto the outer list comprehension):

--- begin code ---
def read_group(fin, rows_per_group):
    rows = [[float(x) for x in fin.readline().split()]
                 for i in range(rows_per_group)]
    fin.readline() # skip blank line
    return rows
--- end code ---

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to