On Wed, Apr 22, 2009 at 1:13 PM, Fabrice Pardo <[email protected]> wrote: > > After reshaping a Fortran array, the new array doesn't share data > with original array. > I will be glad if someone can explain the strange behaviour of this > program. Is it a numpy bug ? > > #vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv > def check_bug(order): > a = numpy.ndarray((3,2),order=order,dtype=int) > a[0,0] = 1 > b = a.reshape((6,)) > a[0,0] = 2 > print b[0] > > check_bug('C') # 2, good > check_bug('F') # 1, wrong ??? > print(numpy.version.version) # 1.2.1 > #^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
from help: """ Returns: reshaped_array : ndarray This will be a new view object if possible; otherwise, it will be a copy. """ " if possible" and "otherwise" are not very precise I guess reshape tries to return an array that is contiguous, if you do a reshape in the order of the array, i.e. change your line to b = a.reshape((6,), order=order) then the reshaped array is just a view. I still find view vs copy very confusing. Josef _______________________________________________ Numpy-discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
