[MATRIX-SIG] FancyArray
Janko Hauser
jhauser@ifm.uni-kiel.de
Fri, 29 Aug 1997 22:30:47 +0200 (CEST)
Hi, I haven't played with it yet, but here is a solution to the
reshape problem.
First, reshape does function here, but returns not an UserArray
object.
>>> a
UserArray([0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> reshape(a,(3,3))
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
But according to the docs of reshape this is a behavior, which can be
expected in some sense, because reshape returns a copy. reshape is
also not an builtin function, so I see no way to deal with it in the
class itself. But the docs emphasize, that one should use
a.shape=(3,3) for inplace reshaping. This can be handled by the class
with following method:
def __setattr__(self,att,value):
if att == 'shape':
self.__dict__['shape']=value
self.array.shape=value
else:
self.__dict__[att]=value
>>> c=myUserArray.UserArray(range(9))
>>> c
UserArray
[0 1 2 3 4 5 6 7 8]
>>> c.shape=(3,3)
>>> c
UserArray
[[0 1 2]
[3 4 5]
[6 7 8]]
>>>
If there are some more drawbacks or wishful things for the UserArray
class, please mention it. I see many useful way to use UserArray, so
this class should be as powerful as possible.
__Janko
_______________
MATRIX-SIG - SIG on Matrix Math for Python
send messages to: matrix-sig@python.org
administrivia to: matrix-sig-request@python.org
_______________