[SciPy-User] noob question about slicing / extracting numbers from array...
newsboost
newsboost@gmail....
Sun Jul 8 12:33:18 CDT 2012
Hi Oleksandr,
Ah, thank you very much - I wasn't even focused on the exception -
thanks for correcting that too. It's quite weird to me that it has to be
re-initialized in the loop, like if one can only write to it one single
time (and not overwrite it) ? That'll probably take some time for me to
feel comfortable with.
So the mistake I did was only to use q[xyz, x] instead of q[xyz][x] -
that's very nice - thank you very much for that. This I should be able
to get familiar with pretty quick, I hope...
Now I can continue on my program - thanks for quick answer(s) !
On 07/08/2012 06:27 PM, Oleksandr Huziy wrote:
> Hi newsboost,
>
> sorry, I thought you were asking why you are getting the exception :
> out of bounds.
> You have to reinitialize xyz at the beginning of each time step if you
> want to iterate through the same bodies on each time step.
> In order to get what you need you write as follows test = q[xyz, x].
>
> please, see the attached script, which works as follows on my system:
> >>>
> type(q) = <type 'numpy.ndarray'>
> q.shape = (21, 2)
> q =
> [[ 0 21]
> [ 1 22]
> [ 2 23]
> [ 3 24]
> [ 4 25]
> [ 5 26]
> [ 6 27]
> [ 7 28]
> [ 8 29]
> [ 9 30]
> [10 31]
> [11 32]
> [12 33]
> [13 34]
> [14 35]
> [15 36]
> [16 37]
> [17 38]
> [18 39]
> [19 40]
> [20 41]]
>
>
> Step: 0
> ------------------
> Body: 0 --- q [0 1 2] [ 0 ] =
> q[xyz][x] = [0 1 2]
> Body: 1 --- q [7 8 9] [ 0 ] =
> q[xyz][x] = [7 8 9]
> Body: 2 --- q [14 15 16] [ 0 ] =
> q[xyz][x] = [14 15 16]
>
> Step: 1
> ------------------
> Body: 0 --- q [0 1 2] [ 1 ] =
> q[xyz][x] = [21 22 23]
> Body: 1 --- q [7 8 9] [ 1 ] =
> q[xyz][x] = [28 29 30]
> Body: 2 --- q [14 15 16] [ 1 ] =
> q[xyz][x] = [35 36 37]
> >>>
>
> Cheers
> --
> Oleksandr (Sasha) Huziy
>
>
>
>
>
> 2012/7/8 newsboost <newsboost@gmail.com <mailto:newsboost@gmail.com>>
>
> Uh, sorry - this has exactly the same behaviour on my system as
> before...
> Why should it help to re-init xyz in your opinion in the x-loop?
>
> My problem is that I want to process all columns (only two here)
> one at a time and then I want to extract 3 numbers for each body.
> Now I only get 2 numbers... Are you familiar with the Matlab notation:
>
> q(xyz, x) ???
>
> That is exactly what I want... 3 numbers from each x-column...
> That's why I tried: q[xyz][x]
> It seems like I'm getting two numbers from the first value (of the
> 3-vector xyz, so the last two numbers in xyz is not used) which
> corresponds to the row... But what I want is 3 numbers (those from
> xyz) at the current x-column...
>
> Sorry, I don't think your suggestion worked. Look forward to hear
> other suggestions. Thanks.
>
>
> On 07/08/2012 06:06 PM, newsboost wrote:
>> *Oleksandr
>> Huziy*guziy.sasha@gmail....<mailto:scipy-user%40scipy.org?Subject=%5BSciPy-User%5D%20noob%20question%20about%20slicing%20/%20extracting%20numbers%0A%20from%20array...&In-Reply-To=4FF90B80.8080105%40gmail.com>
>> /Sun Jul 8 09:29:56 CDT 2012/
>> ------------------------------------------------------------------------
>> Before the loop over bodies reinitialize xyz:
>>
>>
>> for x in range(0,timesteps):
>> print
>> print "Step: ", x
>> print "------------------"
>> xyz=scipy.array([0,1,2]) #<------ reinit
>> for b in range(0,bodies):
>> # LCS[b] = q[xyz][x]
>> print "Body: ", b, " --- q",xyz,"[",x,"] ="
>> test = q[xyz][x]
>> print " q[xyz][x] = ", test
>> xyz = xyz + 7 # go to next body
>>
>> 2012/7/8 newsboost <newsboost@gmail.com <http://mail.scipy.org/mailman/listinfo/scipy-user>>
>>
>> >/ Test program:
>> />/ ------------------------------------
>> />/ #!/usr/bin/python
>> />/
>> />/ #import numpy as np
>> />/ import scipy
>> />/ importscipy.io <http://scipy.io>
>> />/ import sys
>> />/ import numpy
>> />/
>> />/ # load data
>> />/ timesteps = 2
>> />/ bodies = 3
>> />/ q = scipy.arange(0, bodies*7*timesteps).reshape(timesteps,bodies*7).T
>> />/ print "type(q) = ", type(q)
>> />/ print "q.shape =", q.shape
>> />/ print "q = "
>> />/ print q
>> />/ print
>> />/
>> />/ LCS=scipy.zeros((bodies,3))
>> />/ xyz=scipy.array([0,1,2])
>> />/
>> />/ for x in range(0,timesteps):
>> />/ print
>> />/ print "Step: ", x
>> />/ print "------------------"
>> />/
>> />/ for b in range(0,bodies):
>> />/ # LCS[b] = q[xyz][x]
>> />/ print "Body: ", b, " --- q",xyz,"[",x,"] ="
>> />/ test = q[xyz][x]
>> />/ print " q[xyz][x] = ", test
>> />/ xyz = xyz + 7 # go to next body
>> />/ ------------------------------------
>> />/
>> />/ Output:
>> />/ ===============
>> />/ $ ./test.py
>> />/ type(q) = <type 'numpy.ndarray'>
>> />/ q.shape = (21, 2)
>> />/ q =
>> />/ [[ 0 21]
>> />/ [ 1 22]
>> />/ [ 2 23]
>> />/ [ 3 24]
>> />/ [ 4 25]
>> />/ [ 5 26]
>> />/ [ 6 27]
>> />/ [ 7 28]
>> />/ [ 8 29]
>> />/ [ 9 30]
>> />/ [10 31]
>> />/ [11 32]
>> />/ [12 33]
>> />/ [13 34]
>> />/ [14 35]
>> />/ [15 36]
>> />/ [16 37]
>> />/ [17 38]
>> />/ [18 39]
>> />/ [19 40]
>> />/ [20 41]]
>> />/
>> />/
>> />/ Step: 0
>> />/ ------------------
>> />/ Body: 0 --- q [0 1 2] [ 0 ] =
>> />/ q[xyz][x] = [ 0 21]
>> />/ Body: 1 --- q [7 8 9] [ 0 ] =
>> />/ q[xyz][x] = [ 7 28]
>> />/ Body: 2 --- q [14 15 16] [ 0 ] =
>> />/ q[xyz][x] = [14 35]
>> />/
>> />/ Step: 1
>> />/ ------------------
>> />/ Body: 0 --- q [21 22 23] [ 1 ] =
>> />/ Traceback (most recent call last):
>> />/ File "./test.py", line 30, in <module>
>> />/ test = q[xyz][x]
>> />/ IndexError: index (21) out of range (0<=index<20) in dimension 0
>> />/ ===============
>> />/
>> />/ What I want:
>> />/ ************
>> />/ Step: 0 (using data from the 1.column)
>> />/ ------------------
>> />/ Body: 0 --- q [0 1 2] [ 0 ] =
>> />/ q[xyz][x] = [ 0 1 2]
>> />/ Body: 1 --- q [7 8 9] [ 0 ] =
>> />/ q[xyz][x] = [ 7 8 9]
>> />/ Body: 2 --- q [14 15 16] [ 0 ] =
>> />/ q[xyz][x] = [14 15 16]
>> />/
>> />/ Step: 1 (etc. as above, but now using the 2. column)
>> />/ ------------------
>> />/ Body: 0 --- q [0 1 2] [ 1 ] =
>> />/ q[xyz][x] = [ 21 22 23]
>> />/ Body: 1 --- q [7 8 9] [ 1 ] =
>> />/ q[xyz][x] = [ 28 29 30]
>> />/ etc.
>> />/ ************
>> />/
>> />/ Hope you understand... It's a noob question, I know... I just cannot
>> />/ make it right...
>> />/
>> />/ Thanks...
>> />
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/scipy-user/attachments/20120708/a2d4bd61/attachment.html
More information about the SciPy-User
mailing list