[Numpy-discussion] Float view of complex array

Jens Jørgen Mortensen jensj at fysik.dtu.dk
Tue Jan 27 01:28:26 EST 2015


On 01/26/2015 11:02 AM, Jaime Fernández del Río wrote:
> On Mon, Jan 26, 2015 at 1:41 AM, Sebastian Berg 
> <sebastian at sipsolutions.net <mailto: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:
>
> 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

No, that is not what I want.  I want this:

r0, i0, r1, i1, xxxx, xxxx

with stride 8 on the last axis - which should be fine.  My current 
workaround is to do a copy() before view() - thanks Maniteja.

Jens Jørgen

>
> 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 <mailto:NumPy-Discussion at scipy.org>
>     > http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
>     _______________________________________________
>     NumPy-Discussion mailing list
>     NumPy-Discussion at scipy.org <mailto: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




More information about the NumPy-Discussion mailing list