[Numpy-discussion] recarray fun

Stéfan van der Walt stefan at sun.ac.za
Thu May 1 04:57:43 EDT 2008


2008/5/1 Travis E. Oliphant <oliphant at enthought.com>:
> Stéfan van der Walt wrote:
>  > 2008/4/30 Christopher Barker <Chris.Barker at noaa.gov>:
>  >
>  >> Stéfan van der Walt wrote:
>  >>  > That's the way, or just rgba_image.view(numpy.int32).
>  >>
>  >>  ah -- interestingly, I tried:
>  >>
>  >>  rgba_image.view(dtype=numpy.int32)
>  >>
>  >>  and got:
>  >>
>  >>  Traceback (most recent call last):
>  >>    File "<stdin>", line 1, in <module>
>  >>  TypeError: view() takes no keyword arguments
>  >>
>  >>  Since it is optional, shouldn't it be keyword argument?
>  >>
>  >
>  > Thanks, fixed in r5115.
>  >
>  >
>  This was too hasty.   I had considered this before.
>
>  The problem with this is that the object can be either a type object or
>  a data-type object.  You can use view to both re-cast a numpy array as
>  another subtype or as another data-type.
>
>  So, please revert the change until a better solution is posted.

OK, I see your point.  I'm working on a patch that does the following:

def view(type_or_dtype=None, dtype=None, type=None):
    if type_or_dtype:
         if dtype:
             raise ValueError("Cannot specify dtype twice")
         if type:
             raise ValueError("Cannot specify type twice")

        if isinstance(type_or_dtype,py_type):
            type = type_or_dtype

        if isinstance(type_or_dtype,numpy_dtype):
            dtype = type_or_dtype

    return x.view(type=type).view(dtype=dtype)

Would that be a satisfying solution?  I'll be back around 21:00 SAST
to attend to the matter.

Regards
Stéfan



More information about the NumPy-Discussion mailing list