On Thu, Sep 9, 2010 at 05:05, Chris Ball <[email protected]> wrote: > Robert Kern <robert.kern <at> gmail.com> writes: >> >> On Wed, Sep 8, 2010 at 14:42, Chris Ball <ceball <at> gmail.com> wrote: >> > Robert Kern <robert.kern <at> gmail.com> writes: >> > > ... >> >>>> a = numpy.array([1,2,3,4,5]) >> >>>> a.clip(2,None) >> > array([2, 2, 2, 2, 2], dtype=object) >> > >> > I'm not sure why the returned array has a dtype of object >> >> The usual type-matching semantics. a.clip() tries to find a common >> type that fits `a`, 2 and None. Since None only fits in an object >> dtype, that's what you get. > ... >> > and also why the values are not like this: >> >>>> numpy.maximum(a,2) >> > array([2, 2, 3, 4, 5]) >> >> clip(a, low, high) boils down to this in the C code itself (or at >> least the code path that it goes down when the input array needs to be >> upcast): >> >> maximum(minimum(a, high), low) >> >> Since all integer objects compare > None based on the default Python >> 2.x implementation of comparison across types, you would just get the >> low value out of that. > > Thanks for explaining that. It all makes sense if clip() requires both bounds > to > be passed, which is what the documentation indicates, so there is not really a > problem. I was just confused because of the post and associated commit from > Travis a while back implying that he'd altered clip() to support only one > bound > ("Allow clip method to have either min or max passed in", 4566).
I believe that the clip function was overhauled sometime after that. The enhancement probably got lost then. -- 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 [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
