On 04/12/2013 12:55, Sturla Molden wrote: > > On 26 Nov 2013, at 16:18, Daniele Nicolodi <dani...@grinta.net> wrote: > >> Hello, >> >> I believe there is a bug in how assignment to typed memoryviews is >> handled in the compiler. I think the following code should be valid code: >> >> cdef double[::1] a = np.arange(10, dtype=np.double) >> cdef double[::1] b = np.empty(a.size // 2) >> b[:] = a[::2] >> > > Then you are wrong. This should not be valid code. You have declared > b to be contiguous, a[::2] is a discontiguous slice. Thus a[::2] > cannot be assigned to b.
Hello Sturla, please note that I'm copying the array elements, not assigning to the memoryview object: there is an important difference between `b[:] = a[::2]` and `b = a[::2]`. Removing the IMHO wrong check, the generated C code correctly copies the array elements from a to b. Indeed the following code is perfectly fine: cdef double[::1] a = np.arange(10, dtype=np.double) cdef double[::1] b = np.empty(a.size // 2) cdef double[:] t c = a[::2] b[:] = c Thank for looking at this. Cheers, Daniele _______________________________________________ cython-devel mailing list cython-devel@python.org https://mail.python.org/mailman/listinfo/cython-devel