Macaulay2 » Documentation
Packages » Python » PythonObject » PythonObject @ PythonObject » PythonObject @= Thing
next | previous | forward | backward | up | index | toc

PythonObject @= Thing -- augmented matrix multiplication of Python objects

Description

Multiply two Python objects (e.g., NumPy arrays) as matrices and assign the result to the first argument.

i1 : installNumPyMethods();
i2 : x = toPython matrix {{1, 2}, {3, 4}}

o2 = [[1 2]
      [3 4]]

o2 : PythonObject of class numpy.ndarray
i3 : x @= toPython matrix {{5, 6}, {7, 8}}

o3 = [[19 22]
      [43 50]]

o3 : PythonObject of class numpy.ndarray
i4 : x

o4 = [[19 22]
     [43 50]]

o4 : PythonObject of class numpy.ndarray

If the right-hand side is a Macaulay2 object, then it is first converted to a Python object before multiplying.

i5 : x = toPython matrix {{1, 2}, {3, 4}}

o5 = [[1 2]
      [3 4]]

o5 : PythonObject of class numpy.ndarray
i6 : x @= matrix {{8, 7}, {6, 5}}

o6 = [[20 17]
      [48 41]]

o6 : PythonObject of class numpy.ndarray
i7 : x

o7 = [[20 17]
      [48 41]]

o7 : PythonObject of class numpy.ndarray

If the Python class of x defines an __imatmul__ method for in-place matrix multiplication, then it will be called. Otherwise, x and y will be multiplied in the usual way, creating a new Python object that is assigned back to x.

For example, NumPy arrays support in-place matrix multiplication. In the examples above, x was modified directly, and no new objects were created.

See also

Ways to use this method:


The source of this document is in Python/doc/arithmetic.m2:375:0.