[Numpy-discussion] Release of 1.0b5 this weekend

Tim Hochberg tim.hochberg at ieee.org
Tue Aug 29 16:00:50 EDT 2006


Charles R Harris wrote:
> Hi,
>
> On 8/29/06, *Tim Hochberg* <tim.hochberg at ieee.org 
> <mailto:tim.hochberg at ieee.org>> wrote:
>
>
>     -0.5 from me if what we're talking about here is having mutating
>     methods
>     return self rather than None. Chaining stuff is pretty, but having
>     methods that mutate self and return self looks like a source of
>     elusive
>     bugs to me.
>
>     -tim
>
>
> But how is that any worse than the current mutating operators? I think 
> the operating principal is that methods generally work in place, 
> functions make copies. The exceptions to this rule need to be noted.
Is that really the case? I was more under the impression that there 
wasn't much rhyme nor reason to this. Let's do a quick dir(somearray) 
and see what we get (I'll strip out the __XXX__ names):

'all', 'any', 'argmax', 'argmin', 'argsort', 'astype', 'base', 
'byteswap', 'choose', 'clip', 'compress', 'conj', 'conjugate', 'copy', 
'ctypes', 'cumprod', 'cumsum', 'data', 'diagonal', 'dtype', 'dump', 
'dumps', 'fill', 'flags', 'flat', 'flatten', 'getfield', 'imag', 'item', 
'itemsize', 'max', 'mean', 'min', 'nbytes', 'ndim', 'newbyteorder', 
'nonzero', 'prod', 'ptp', 'put', 'putmask', 'ravel', 'real', 'repeat', 
'reshape', 'resize', 'round', 'searchsorted', 'setfield', 'setflags', 
'shape', 'size', 'sort', 'squeeze', 'std', 'strides', 'sum', 'swapaxes', 
'take', 'tofile', 'tolist', 'tostring', 'trace', 'transpose', 'var', 'view'

Hmmm. Without taking too much time to go through these one at a time, 
I'm pretty certain that they do not in general mutate things in place. 
Probably at least half return, or can return new arrays, sometimes with 
references to the original data, but new shapes, sometimes with 
completely new data. In fact, other than sort, I'm not sure which of 
these does mutate in place.

-tim






More information about the NumPy-Discussion mailing list