Glen W. Mabey wrote: > Hello, > > I imagine that perhaps this issue I'm seeing is only an issue because I > don't thoroughly understand the buffer issues associated with numpy > arrays, but here it is anyway: > > In [16]:a1 = numpy.zero > numpy.zeros numpy.zeros_like > > In [16]:a1 = numpy.zeros( (2,2) ) > > In [17]:a1[0,:] = 1 > > In [18]:a1 > Out[18]: > array([[ 1., 1.], > [ 0., 0.]]) > > In [19]:str(a1.data) > Out[19]:'\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' > > In [20]:a2 = a1.transpose() > > In [21]:str(a2.data) > Out[21]:'\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' > > That is, when getting the .data from an array, if it was C_CONTIGUOUS > but was .transposed(), the .data does not reflect this operation, right?
Correct, it just gives you the data as-is in memory, not as interpreted via the strides. Transposition and slicing are implemented by changing the strides and not changing any data. > So, would that imply that a .copy() should be done first on any array > that you want to access .data on? asarray(a, order='C') should be sufficient, I think. That shouldn't copy if it is already correctly ordered. -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion