[Numpy-discussion] Float view of complex array
Jaime Fernández del Río
jaime.frio at gmail.com
Tue Jan 27 06:25:54 EST 2015
On Mon, Jan 26, 2015 at 10:28 PM, Jens Jørgen Mortensen <jensj at fysik.dtu.dk>
wrote:
> 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.
My bad, you are absolutely right, Jens...
I have put together a quick PR (https://github.com/numpy/numpy/pull/5508)
that fixes your use case, by relaxing the requirements for views of
different dtypes. I'd appreciate if you could take a look at the logic in
the code (it is profusely commented), and see if you can think of other
cases that can be viewed as another dtype that I may have overlooked.
Thanks,
Jaime
>
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
>
> _______________________________________________
> 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20150127/05cb5dd9/attachment.html>
More information about the NumPy-Discussion
mailing list