[Numpy-discussion] missing array type
Travis Oliphant
oliphant.travis at ieee.org
Tue Feb 28 12:19:02 EST 2006
Sasha wrote:
>>>>b = array([1])
>>>>ndarray((5,), strides=(0,), buffer=b)
>>>>
>>>>
>Traceback (most recent call last):
> File "<stdin>", line 1, in ?
>TypeError: buffer is too small for requested array
>
>I would think memory-saving is the only justification for allowing
>zero strides.
>
>What use does your change enable?
>
>
I was just simplifying the PyArray_CheckStrides code.
I didn't try to actually enable creating 0-stride arrays in
PyArray_NewFromDescr.
I don't mind if it is enabled though. I just haven't done it yet.
I agree that 0-stride arrays are a "can-of-worms", and I also do not see
changing ufunc behavior. The current behavior is understandable and
exactly what one would expect with zero-stride and multiple dimensioned
arrays.
i.e.
b = arange(5);
b.strides = 0
add(b,1,b)
where b has shape (5,) and stride (0,) would add 1 to the first element
of b 5 times. Since all elements of the array b are obtained from the
first element (that's what stride=0 means), you end up with an array of
all 5's. This may not be useful, I agree, but it is understandable and
changing it would be too much of an exception. If somebody is creating
0-stride arrays on their own, then they must know what they are doing.
-Travis
More information about the NumPy-Discussion
mailing list