[Matrix-SIG] Syntactic sugar for constructing arrays

Charles G Waldman cgw@pgt.com
29 Sep 1998 13:12:06 -0400


The following message is a courtesy copy of an article
that has been posted to comp.lang.python as well.


The more I use Numeric Python, the more I appreciate the expressive
power it adds to Python.  I do a fair amount of geometric work, and I
find it very elegant to be able to write things like:

	point = point+offset
or

def distance(p1,p2):
	return sqrt(sum((p1-p2)**2))

where point, offset, p1, p2 are 1-dimensional NumPy arrays.  This
takes Python, IMO, to a level of sophistication well beyond a "nifty
easy-to-use scripting language"; it becomes a very attractive
environment for doing math/scientific work.  

I used to write X-Y coordinates as 2-tuples, but things like vector
addition are much less elegant this way than they are if I use NumPy
arrays.  The more I use Numeric Python, the more I realize that for
lots of mathematical structures like points, a 1-D NumPy array is a
much better representation than a tuple.

The downside of this is that my code is now littered with the construction:

center = array((256,256))
point = array((10,-20))

etc.  

Since the array is such a useful type, I'd like to see a
cleaner-looking syntax for creating array objects.  I'd like to be
able to write, for instance,

center = <256,256>
point =  <10,-20>

What do people think of this suggestion?