Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #17239

Re: file data => array(s)

Path csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!aioe.org!news.stack.nl!newsfeed.xs4all.nl!newsfeed6.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail
Return-Path <d@davea.name>
X-Original-To python-list@python.org
Delivered-To python-list@mail.python.org
X-Spam-Status OK 0.001
X-Spam-Evidence '*H*': 1.00; '*S*': 0.00; 'python': 0.08; "(i'm": 0.09; 'append': 0.09; 'either)': 0.09; 'initialized': 0.09; 'okay': 0.09; 'rows': 0.09; 'tia,': 0.09; 'subject:file': 0.12; '"r")': 0.16; "'r')": 0.16; 'arrays,': 0.16; 'arrays.': 0.16; 'columns': 0.16; 'd1,': 0.16; 'd2,': 0.16; 'data2': 0.16; 'file.close()': 0.16; 'install.': 0.16; 'iterator': 0.16; 'numpy': 0.16; 'slicker': 0.16; 'subject:array': 0.16; 'succinct': 0.16; "that'll": 0.16; 'cc:addr:python-list': 0.16; 'wrote:': 0.18; '2.2': 0.18; 'file,': 0.19; 'cc:no real name:2**0': 0.20; 'trying': 0.21; 'subject:data': 0.21; "doesn't": 0.22; 'header:In- Reply-To:1': 0.22; '0.1': 0.23; 'items.': 0.23; 'replacing': 0.23; 'somehow': 0.23; 'way?': 0.23; 'cc:2**0': 0.24; 'code': 0.25; 'guess': 0.26; "i'm": 0.26; 'tried': 0.27; '(and': 0.28; 'mine': 0.28; 'lists': 0.28; 'partial': 0.29; 'problem': 0.29; 'print': 0.29; 'cc:addr:python.org': 0.29; 'error': 0.29; 'pm,': 0.29; 'lines': 0.30; 'array': 0.30; 'seem': 0.30; 'float.': 0.30; 'option:': 0.30; "i've": 0.31; "didn't": 0.31; 'actual': 0.32; "isn't": 0.33; "won't": 0.33; 'header:User-Agent:1': 0.33; 'there': 0.33; 'decide': 0.33; 'done': 0.34; 'probably': 0.34; 'eric': 0.34; 'curious': 0.34; 'elegant': 0.34; 'something': 0.35; 'file': 0.36; '...': 0.36; 'uses': 0.36; 'but': 0.37; 'list,': 0.37; 'received:192': 0.37; "there's": 0.37; 'think': 0.37; 'could': 0.37; 'some': 0.38; "i'd": 0.39; 'data,': 0.39; "it's": 0.40; 'received:192.168': 0.40; 'more': 0.61; 'your': 0.61; 'you.': 0.63; 'legal': 0.70; 'header:Reply-To:1': 0.71; 'reply- to:no real name:2**0': 0.72; 'to:addr:yahoo.com': 0.83; '05:20': 0.84; '10.1': 0.84; 'so:': 0.84; '3.3': 0.91
Date Wed, 14 Dec 2011 17:59:25 -0500
From Dave Angel <d@davea.name>
User-Agent Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.23) Gecko/20110922 Thunderbird/3.1.15
MIME-Version 1.0
To Eric <einazaki668@yahoo.com>
Subject Re: file data => array(s)
References <81b5d566-3a82-4a8e-ac8a-98b8dd92f6bc@4g2000yqu.googlegroups.com>
In-Reply-To <81b5d566-3a82-4a8e-ac8a-98b8dd92f6bc@4g2000yqu.googlegroups.com>
Content-Type text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding 7bit
X-Provags-ID V02:K0:u+bMnKd5IeabM7saz2Mfeou+VPOEuKh/e8BBK8B3lCc /CWVftXWqWdxtLRE0dH8oj8KBtwhA5e7jcVbLWZye4HLsNiF72 m5zmOLy8Fa78DgU4AEHIzslv7sMiFRqhWP/MJpyHt6fEju6AIy bUeZmhkgoaqj3E/nhAlrmcuSuK9SsIRkR2dD2dm9qH/hwepWm9 BdSsMOAzfKpMeoQjSLB4abCBnFkneTEKxG8Gl+3DS7eE6UqmUM Jl/omNLu88M9qaZavVAd8vRnkxGKubrvlann2GnOT1eGTSFgOp dq6Z1F17ryfLHpbc/4eSbXYiwi+fA4dwWnW8CCUmEuT7UUsOUm 3GZvKkCEvqQo0lrG3GXM=
Cc python-list@python.org
X-BeenThere python-list@python.org
X-Mailman-Version 2.1.12
Precedence list
Reply-To d@davea.name
List-Id General discussion list for the Python programming language <python-list.python.org>
List-Unsubscribe <http://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe>
List-Archive <http://mail.python.org/pipermail/python-list>
List-Post <mailto:python-list@python.org>
List-Help <mailto:python-list-request@python.org?subject=help>
List-Subscribe <http://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe>
Newsgroups comp.lang.python
Message-ID <mailman.3658.1323903585.27778.python-list@python.org> (permalink)
Lines 73
NNTP-Posting-Host 2001:888:2000:d::a6
X-Trace 1323903585 news.xs4all.nl 6861 [2001:888:2000:d::a6]:46345
X-Complaints-To abuse@xs4all.nl
Xref x330-a1.tempe.blueboxinc.net comp.lang.python:17239

Show key headers only | View raw


On 12/14/2011 05:20 PM, Eric wrote:
> I'm trying to read some file data into a set of arrays.  The file data
> is just four columns of numbers, like so:
>
>     1.2    2.2   3.3  0.5
>     0.1   0.2    1.0  10.1
>     ... and so on
>
> I'd like to read this into four arrays, one array for each column.
> Alternatively, I guess something like this is okay too:
>
>     [[1.2, 2.2, 3.3, 0.5], [0.1, 0.2, 1.0, 10.1], ... and so on]
>
> I came up with the following for the four array option:
>
>     file = open(fileName, 'r')
>     for line in file.readlines():
The readlines() call is a waste of time/space.  file is already an 
iterator that'll return lines for you.
>        d1, e1, d2, e2 = map(float, line.split())
>        data1.append(d1)  # where data1, err1, data2, err2 are init-ed
> as empty lists
>        err1.append(e1)
>        data2.append(d2)
>        err2.append(e2)
>     file.close()
>
> But somehow it doesn't seem very python-esque (I'm thinking there's a
> more elegant and succinct way to do it in python).  I've also tried
> replacing the above "map" line with:
>
>        d = d + map(float, line.split())  # where d is initialized as d
> = []
>
> But all I get is one long flat list, not what I want.
>
> So is the map and append method the best I can do or is there a
> slicker way?
>
> One more thing, no numpy.  Nothing against numpy but I'm curious to
> see what can be done with just the box stock python install.
>
> TIA,
> eric
When I see a problem like this, I turn to zip().  It's got some powerful 
uses when rows and columns need inverting.

I didn't try it on an actual file, but the following works:
linedata =    [[1.2, 2.2, 3.3, 0.5], [0.1, 0.2, 1.0, 10.1] ]

data, err1, data2, err2 = zip(*linedata)

print data
print err1
print data2
print err2

So you could try (untested)

file = open(filename, "r")
linedata = [ map(float, line) for line in file]
data, err1, data2, err2 = zip(*linedata)
file.close()

Note that your code won't work (and mine probably won't either) if one 
of the lines has 3 or 5 items.  Or if one of the numbers isn't legal 
format for a float.  So you need to think about error checking, or 
decide whether a partial result is important.

-- 

DaveA

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

file data => array(s) Eric <einazaki668@yahoo.com> - 2011-12-14 14:20 -0800
  Re: file data => array(s) Dave Angel <d@davea.name> - 2011-12-14 17:59 -0500
    Re: file data => array(s) Eric <einazaki668@yahoo.com> - 2011-12-14 15:25 -0800
    Re: file data => array(s) Eric <einazaki668@yahoo.com> - 2011-12-15 10:37 -0800
      Re: file data => array(s) MRAB <python@mrabarnett.plus.com> - 2011-12-15 19:34 +0000
  Re: file data => array(s) Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2011-12-14 23:27 +0000
    Re: file data => array(s) Eric <einazaki668@yahoo.com> - 2011-12-15 10:51 -0800

csiph-web