[Numpy-discussion] numpy.filled, again

Nathaniel Smith njs at pobox.com
Wed Jun 12 08:10:15 EDT 2013

Hi all,

It looks like we've gotten a bit confused and need to untangle
something. There's a PR to add new functions 'np.filled' and
And there was a discussion about this on the list back in January:

I think a reasonable summary of the opinions in the thread are:
- This functionality is great, ...
- ...but we can't call it 'np.filled' because there's also
'np.ma.filled' which does something else...
- ...but there really aren't any better names...
- ...so we should overload np.empty, like: 'np.empty(shape, fill=value)'

In the mean time the original submitter has continued puttering along
polishing the original patch, and it's ready to merge... except it's
still the original interface, somehow the thread discussion and the PR
discussion never met up.

So, we have to decide what to do.

Personally I think that overloading np.empty is horribly ugly, will
continue confusing newbies and everyone else indefinitely, and I'm
100% convinced that we'll regret implementing such a warty interface
for something that should be so idiomatic. (Unfortunately I got busy
and didn't actually say this in the previous thread though.) So I
think we should just merge the PR as is. The only downside is the
np.ma inconsistency, but, np.ma is already inconsistent (cf.
masked_array.fill versus masked_array.filled!), somewhat deprecated,
and AFAICT there are far more people who will benefit from a clean
np.filled idiom than who actually use np.ma (and in particular its
fill-value functionality). So there would be two
bad-but-IMHO-acceptable options: either live with an inconsistency
between np.filled and np.ma.filled, or deprecate np.ma.filled in favor
of masked_array.filled (which does exactly the same thing) and
eventually switch np.ma.filled to be consistent with the new

But, that's just my opinion.


More information about the NumPy-Discussion mailing list