On Mon, Jan 26, 2015 at 10:28 PM, Jens Jørgen Mortensen <je...@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 > > <sebast...@sipsolutions.net <mailto:sebast...@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@scipy.org <mailto:NumPy-Discussion@scipy.org> > > > http://mail.scipy.org/mailman/listinfo/numpy-discussion > > > > > > _______________________________________________ > > NumPy-Discussion mailing list > > NumPy-Discussion@scipy.org <mailto:NumPy-Discussion@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@scipy.org > > http://mail.scipy.org/mailman/listinfo/numpy-discussion > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@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@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion