Charles R Harris wrote: > > > On 1/15/07, *A. M. Archibald* <[EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]>> wrote: > > On 15/01/07, David Cournapeau <[EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]>> wrote: > > Hi, > > > > I am trying to add support for out argument to one C > function using > > numpy API (still the clip function). I was wondering about the > expected > > behaviour when out does not have the "expected" type. > > For example, using again the clip function (but the question > is not > > specific to this function) > > > > In [1]: import numpy > > > > In [2]: a = numpy.linspace(0, 10, 101) > > > > In [3]: b = numpy.zeros(a.shape, dtype = numpy.int32) > > > > In [4]: print a.dtype > > float64 > > > > In [5]: a.clip(0.1, 0.5, b) > > > > Should this be equivalent to b = a.clip(0.1, 0.5); b = > > b.astype(numpy.int32) (ie, the casting is done at the end, > similar to an > > ufunc) ? > > Since the point of output arguments is to avoid allocating new > storage, > > > > If we take that seriously, then an error should be raised on a shape, > or type mismatch. For the shape, there is no problem, I guess. A different shape is an error (except if I want to support broadcasting...). The problem is really for out having same shape than in, but having different type than input.
At first, I wanted to throw an error (for example, clipping an array which gives a float, and out is integer), but that would be incompatible with current clip behaviour. Concerning the point of avoiding allocating new storage, I am a bit suspicious: if the types do not match, and the casting is done at the end, then it means all internal computation will be done is whatever type is chosen by the function (I am using PyArray_CommonType for that), and the cast done at the end, meaning new storage. Actually, I find more logical to throw an error of the point is to avoid new storage, as giving a mismatched type out buffer would make the function create an internal buffer. David _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion