Python evolution: Unease
Robert Kern
rkern at ucsd.edu
Thu Jan 6 21:12:23 EST 2005
Bulba! wrote:
> On Wed, 05 Jan 2005 17:25:08 -0800, Robert Kern <rkern at ucsd.edu>
> wrote:
>>I still think numarray is a good start for this. It handles more than
>>just numbers. And RecArray (an array that has different types in each
>>column, as you seem to require) can be subclassed to add these methods
>>to it.
>
>
> I have downloaded it, playing with it and like it. I esp. like things
> like:
>
>
>>>>print a + a
>
> [2 4 6]
>
> or
>
>
>>>>b.getshape()
>
> (4,3)
>
> Very Pythonic. :-)
>
> However, not all things are generic enough like I meant. That
> is not to criticize, but merely to point out that the library is for
> obvious reasons slanted towards numerical work, so e.g. while the
> following works:
>
> .>>> from numarray import transpose
> .>>> transpose([[1,2],[3,4]])
> array([[1, 3],
> [2, 4]])
>
> ...this doesn't:
>
>
>>>>transpose([('phone1', 12345), ('phone2', 67890)])
>
> Traceback (most recent call last):
> File "<interactive input>", line 1, in ?
> [....]
> TypeError: Expecting a python numeric type, got something else.
>
> Why would someone want to do such a thing: suppose he
> wants 'phone1' and 'phone2' and number records sequenced
> horizontally instead vertically, while when he read that from
> a file, such was the file structure. It's a boneheaded example,
> but you get the idea.
http://stsdas.stsci.edu/numarray/numarray-1.1.html/module-numarray.objects.html
In [1]: from numarray import objects, transpose
In [2]: a = objects.array([['phone1', 12345], ['phone2', 67890]])
In [3]: a
Out[3]:
ObjectArray([['phone1', 12345],
['phone2', 67890]])
In [4]: transpose(a)
Out[4]:
ObjectArray([['phone1', 'phone2'],
[12345, 67890]])
Note the use of lists. Using tuples makes the constructor think you want
a vector of tuple objects.
--
Robert Kern
rkern at ucsd.edu
"In the fields of hell where the grass grows high
Are the graves of dreams allowed to die."
-- Richard Harter
More information about the Python-list
mailing list