[Numpy-discussion] Float view of complex array

Sebastian Berg sebastian at sipsolutions.net
Mon Jan 26 05:23:22 EST 2015


On Mo, 2015-01-26 at 02:02 -0800, Jaime Fernández del Río wrote:
> On Mon, Jan 26, 2015 at 1:41 AM, Sebastian Berg
> <sebastian at sipsolutions.net> wrote:
>         On Mo, 2015-01-26 at 09:24 +0100, Jens Jørgen Mortensen wrote:
>         > Hi!
>         >
>         > I have a view of a 2-d complex array that I would like to
>         view as a 2-d
>         > float array.  This works OK:
>         >
>         >  >>> np.ones((2, 4), complex).view(float)
>         > array([[ 1.,  0.,  1.,  0.,  1.,  0.,  1.,  0.],
>         >         [ 1.,  0.,  1.,  0.,  1.,  0.,  1.,  0.]])
>         >
>         > but this doesn't:
>         >
>         >  >>> np.ones((2, 4), complex)[:, :2].view(float)
>         > Traceback (most recent call last):
>         >    File "<stdin>", line 1, in <module>
>         > ValueError: new type not compatible with array.
>         >  >>> np.__version__
>         > '1.9.0'
>         >
>         > and I don't understand why.  When looking at the memory
>         layout, I think
>         > it should be possible.
>         >
>         
>         Yes, it should be possible, but it is not :). You could hack
>         it by using
>         `np.ndarray` (or stride tricks). Or maybe you are interested
>         making the
>         checks whether it makes sense or not less strict.
> 
> 
> How would it be possible? He goes from an array with 16 byte strides
> along the last axis:
> 

Oh, sorry, you are right of course. I thought it was going the other way
around, from double -> complex. That way could work (in this case I
think), but does not currently.

> 
> r0i0, r1i1, r2i2, r3i3
> 
> 
> to one with 32 byte strides, which is OK
> 
> 
> r0i0, xxxx, r2i2, xxxx
> 
> 
> but everything breaks down when he wants to have alternating strides
> of 8 and 24 bytes:
> 
> 
> r0, i0, xxxx, r2, i2, xxxx
> 
> 
> which cannot be hacked in any sensible way.
> 
> 
> What I think could be made to work, but also fails, is this:
> 
> 
> np.ones((2, 4), complex).reshape(2, 4, 1)[:, :2, :].view(float)
> 
> 
> 
> Here the original strides are (64, 16, xx) and the resulting view
> should have strides (64, 32, 8), not sure what trips this.
> 
> 
> Jaime
>  
> 
>         
>         - Sebastian
>         
>         > Jens Jørgen
>         >
>         > _______________________________________________
>         > NumPy-Discussion mailing list
>         > NumPy-Discussion at scipy.org
>         > http://mail.scipy.org/mailman/listinfo/numpy-discussion
>         
>         
>         
>         _______________________________________________
>         NumPy-Discussion mailing list
>         NumPy-Discussion at scipy.org
>         http://mail.scipy.org/mailman/listinfo/numpy-discussion
>         
> 
> 
> 
> 
> -- 
> (\__/)
> ( O.o)
> ( > <) Este es Conejo. Copia a Conejo en tu firma y ayúdale en sus
> planes de dominación mundial.
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20150126/dfbe9f9f/attachment.sig>


More information about the NumPy-Discussion mailing list