[Numpy-discussion] Consider improving numpy.outer's behavior with zero-dimensional vectors

Nathaniel Smith njs at pobox.com
Sat Apr 11 12:29:01 EDT 2015


On Sat, Apr 11, 2015 at 12:06 PM, Neil Girdhar <mistersheik at gmail.com> wrote:
>> On Wed, Apr 8, 2015 at 7:34 PM, Neil Girdhar <mistersheik at gmail.com>
>> wrote:
>> > Numpy's outer product works fine with vectors. However, I seem to always
>> > want len(outer(a, b).shape) to be equal to len(a.shape) + len(b.shape).
>> > Wolfram-alpha seems to agree
>> > https://reference.wolfram.com/language/ref/Outer.html with respect to
>> > matrix
>> > outer products.
>> You're probably right that this is the correct definition of the outer
>> product in an n-dimensional world. But this seems to go beyond being
>> just a bug in handling 0-d arrays (which is the kind of corner case
>> we've fixed in the past); np.outer is documented to always ravel its
>> inputs to 1d.
>> In fact the implementation is literally just:
>> a = asarray(a)
>> b = asarray(b)
>> return multiply(a.ravel()[:, newaxis], b.ravel()[newaxis,:], out)
>> Sebastian's np.multiply.outer is much more generic and effective.
>> Maybe we should just deprecate np.outer? I don't see what use it
>> serves. (When and whether it actually got removed after being
>> deprecated would depend on how much use it actually gets in real code,
>> which I certainly don't know while typing a quick email. But we could
>> start telling people not to use it any time.)
>
>
> +1 with everything you said.

Want to write a PR? :-)

-- 
Nathaniel J. Smith -- http://vorpus.org



More information about the NumPy-Discussion mailing list