[Numpy-discussion] Zeros in strides

Travis Oliphant oliphant.travis at ieee.org
Thu Feb 2 17:39:02 CST 2006


Sasha wrote:

>A rank-1 array with strides=0 behaves almost like a scalar, in fact
>scalar arithmetics is currently implemented by setting stride to 0 is
>generic umath loops.  Like scalar, rank-1 array with stride=0 only
>needs a buffer of size 1*itemsize, but currently numpy does not allow
>creation of rank-1 arrays with buffer smaller than size*itemsize:
>  
>
As you noted,  broadcasting is actually done by setting strides equal to 
0 in the affected dimensions.

The changes you describe, however, require serious thought with C-level 
explanations because you will be changing some fundamental assumptions 
that are made throughout the code.

For example, currently there is no way you can construct new memory for 
an array and have different strides assigned (that's why strides is 
ignored if no buffer is given).  You would have to  change the behavior 
of the C-level function PyArray_NewFromDescr.   You need to propose how 
exactly you would change that. 

Checking for strides that won't cause later segfaults can be tricky 
especially if you start allowing buffer-sizes to be different than array 
dimensions.   How do you propose to ensure that you won't walk outside 
of allocated memory when somebody changes the strides later?

I'm concerned that your proposal has too many potential pitfalls.  At 
least you haven't addressed them sufficiently.   My current inclination 
is to simply disallow setting the strides attribute now that the 
misaligned segments of code have been tested.

-Travis





More information about the Numpy-discussion mailing list