[Tutor] reading a string into an array
bob gailer
bgailer at gmail.com
Sun Jun 1 13:03:03 CEST 2008
Kent Johnson wrote:
> On Sat, May 31, 2008 at 3:43 PM, Bryan Fodness <bryan.fodness at gmail.com> wrote:
>
>> I am trying to read a long string of values separated by a backslash into an
>> array of known size.
>>
>> Here is my attempt,
>>
>> from numpy import *
>> ay, ax = 384, 512
>> a = zeros([ay, ax])
>> for line in open('out.out'):
>> data = line.split('\\')
>>
>
> Are you trying to accumulate all the lines into data? If so you should use
> data = []
> for line in open('out.out'):
> data.extend(line.split('\\'))
>
>
>> k = 0
>> for i in range(ay):
>> for j in range(ax):
>> a[i, j] = data[k]
>> k+=1
>> but, I receive the following error.
>>
>> Traceback (most recent call last):
>> File "C:/Users/bryan/Desktop/dose_array.py", line 13, in <module>
>> a[i, j] = data[k]
>> ValueError: setting an array element with a sequence.
>>
>
> I think this is because data is a list of strings, not numbers. Change
> my line above to
> data.extend(int(i) for i in line.split('\\'))
>
> But you don't have to create your array by copying every item. It is
> numpy, after all! I think this will work:
> data = []
> for line in open('out.out'):
> data.extend(int(i) for i in line.split('\\'))
>
Even more concise and possibly faster:
data = open('out.out').read().replace('\n', '\\').split('\\')
> a = array(data)
> a.shape = (384, 512)
>
> Kent
> _______________________________________________
> Tutor maillist - Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>
>
--
Bob Gailer
919-636-4239 Chapel Hill, NC
More information about the Tutor
mailing list