[Numpy-discussion] should outer take an output argument?

Anne Archibald peridot.faceted at gmail.com
Wed Apr 30 04:21:57 EDT 2008


2008/4/29 Alan G Isaac <aisaac at american.edu>:
> As I was looking at Bill's conjugate gradient posting,
>  I found myself wondering if there would be a payoff
>  to an output argument for ``numpy.outer``.  (It is fairly
>  natural to repeatedly recreate the outer product of
>  the adjusted residuals, which is only needed during a
>  single iteration.)

I avoid np.outer, as it seems designed for foot shooting. (It forcibly
flattens both arguments into vectors no matter what shape they are and
then computes their outer product.) np.multiply.outer does (what I
consider to be) the right thing. Not that it takes an output argument
either, as far as I can tell.

But trying to inspect it suggests a few questions:

* Why are ufunc docstrings totally useless?
* Why are output arguments not keyword arguments?

As for your original question, yes, I think it would be good if
.outer() and .reduce() methods of ufuncs took output arguments. This
would let one use add.reduce() as a poor man's sum() even when dealing
with uint8s, for example. (Coming up with a problem for which
subtract.reduce(), divide.reduce(), or arctan2.reduce() are the
solutions is left as an exercise for the reader.) I can definitely see
a use for divide.outer() : Int -> Int -> Float, though.

Anne



More information about the NumPy-Discussion mailing list