class_docstr: Numpy printer which handles vectorized piecewise functions,
  logical operators, etc.
class_docstr_tok: ["Numpy","printer","which","handles","vectorized","piecewise","functions",",","logical","operators",",","etc","."]
docstr: Matrix multiplication printer
docstr_tok: ["Matrix","multiplication","printer"]
code: def _print_MatMul(self, expr):
      "Matrix multiplication printer"
      if expr.as_coeff_matrices()[0] is not S.One:
          expr_list = expr.as_coeff_matrices()[1] + [
              (expr.as_coeff_matrices()[0])
          ]
          return "({})".format(
              ").dot(".join(self._print(i) for i in expr_list)
          )
      return "({})".format(
          ").dot(".join(self._print(i) for i in expr.args)
      )
  
imports: from sympy.core import S
  from sympy.core.function import Lambda
  from sympy.core.power import Pow
  from .pycode import PythonCodePrinter, _known_functions_math, _print_known_const, _print_known_func, _unpack_integral_limits, ArrayPrinter
  from .codeprinter import CodePrinter
label_desc: Use image node_id 3 for calling the NumPyPrinter obj's underlying member method code with example usage: obj._print_MatMul(expr) and returns: str, str