|
From: Travis O. <oli...@ie...> - 2006-02-03 00:44:06
|
Sasha wrote: >I don't know if this came from numarray or not, but for me as someone >who transitions from Numeric, the "strides" attribute to an ndarray is >a a new feature. I've spend some time playing with it and there are >some properties that I dislike. Some of these undesired properties >are probably bugs and easy to fix, but others require some discussion. > > Of course strides have always been there, they've just never been visible from Python. Allowing the user to set the strides may not be a good idea. It was done largely so that the code that deals with misaligned data could be tested. However, it also allows you a lot of flexibility for interacting with arbitrary data-buffers that might be useful, so I'm inclined to allow it if the possible problems can be fixed. Users that set strides will have to know what they are doing, of course. The average user wouldn't bother with it. >1. Negative strides: > > > >>>>x = zeros(5) >>>>x.strides= (-4,) >>>>x >>>> >>>> >array([ 0, 25, 0, -136009696, -136009536]) > >Looks like a bug. PyArray_CheckStrides only checks for one end of the >buffer. > Right. PyArray_CheckStrides needs to be better or we can't allow negative strides. > > >3. "Fractional" strides: >I call "fractional" strides that are not a multiple of "itemsize". > > In dealing with an arbitrary data-buffer, I could see this as being useful, so I'm not sure if disallowing it is a good idea. Again, setting strides is not something that should be done by the average user so I'm not as concerned about "forgetting" the units strides are in. If a user is going to be setting strides you have to assume they are being careful. A separate attribute called steps that uses element-sizes instead of byte-sizes is a possible idea. -Travis |