[Python-Dev] PEP 465: A dedicated infix operator for matrix multiplication

Nathaniel Smith njs at pobox.com
Tue Apr 8 14:52:59 CEST 2014


On Tue, Apr 8, 2014 at 9:58 AM, Björn Lindqvist <bjourne at gmail.com> wrote:
> 2014-04-07 3:41 GMT+02:00 Nathaniel Smith <njs at pobox.com>:
>> So, I guess as far as I'm concerned, this is ready to go. Feedback welcome:
>>   http://legacy.python.org/dev/peps/pep-0465/
>
> Couldn't you please have made your motivation example actually runnable?
>
> import numpy as np
> from numpy.linalg import inv, solve
>
> # Using dot function:
> S = np.dot((np.dot(H, beta) - r).T,
>            np.dot(inv(np.dot(np.dot(H, V), H.T)), np.dot(H, beta) - r))
>
> # Using dot method:
> S = (H.dot(beta) - r).T.dot(inv(H.dot(V).dot(H.T))).dot(H.dot(beta) - r)
>
> Don't keep your reader hanging! Tell us what the magical variables H,
> beta, r and V are. And why import solve when you aren't using it?
> Curious readers that aren't very good at matrix math, like me, should
> still be able to follow your logic. Even if it is just random data,
> it's better than nothing!

There's a footnote that explains the math in more detail and links to
the real code this was adapted from. And solve is used further down in
the section. But running it is really what you want, just insert:

beta = np.random.randn(10)
H = np.random.randn(2, 10)
r = np.random.randn(2)
V = np.random.randn(10, 10)

Does that help? ;-)

See also:
    https://mail.python.org/pipermail/python-ideas/2014-March/027077.html

-- 
Nathaniel J. Smith
Postdoctoral researcher - Informatics - University of Edinburgh
http://vorpus.org


More information about the Python-Dev mailing list