Re: Help doing it the "python way"
- From: Jan Kuiken <jan.kuiken@xxxxxxxxxxx>
- Date: Tue, 29 May 2012 19:31:58 +0200
On 5/24/12 22:22 , Scott Siegler wrote:
I am an experienced programmer but a beginner to python. As such, I can figure out a way to code most algorithms using more "C" style syntax.
I am doing something now that I am sure is a more python way but i can't quite get it right. I was hoping someone might help.
So I have a list of grid coordinates (x, y). From that list, I want to create a new list that for each coordinate, I add the coordinate just above and just below (x,y+1) and (x,y-1)
right now I am using a for loop to go through all the coordinates and then separate append statements to add the top and bottom.
is there a way to do something like: [(x,y-1), (x,y+1) for zzz in coord_list] or something along those lines?
If you have lot's of numerical data you can use the NumPy module (http://numpy.scipy.org/), your problem would reduce to something like this (copied from an IPython shell, could be shorter)
Regards,
Jan Kuiken
In [1]: first_list = np.arange(0, 10).reshape((5,2))
In [2]: above = np.array([0,-1])
In [3]: below = np.array([0,+1])
In [4]: N,d = first_list.shape
In [5]: second_list = np.empty((N*2,d))
In [6]: second_list[0::2] = first_list + above
In [7]: second_list[1::2] = first_list + below
In [8]: second_list
Out[8]:
array([[ 0., 0.],
[ 0., 2.],
[ 2., 2.],
[ 2., 4.],
[ 4., 4.],
[ 4., 6.],
[ 6., 6.],
[ 6., 8.],
[ 8., 8.],
[ 8., 10.]])
In [9]: first_list
Out[9]:
array([[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9]])
.
- References:
- Help doing it the "python way"
- From: Scott Siegler
- Help doing it the "python way"
- Prev by Date: pygame: transparency question
- Next by Date: Install lxml package on Windows 7
- Previous by thread: Re: Help doing it the "python way"
- Next by thread: Scoping Issues
- Index(es):
Relevant Pages
|