diff --git a/qsymm/kwant_continuum.py b/qsymm/kwant_continuum.py
index 9a720522ad97cf806c9f30e2c0cfa45efe645706..842bf125c3212b079f366b13ea8ba85ec8f04b31 100644
--- a/qsymm/kwant_continuum.py
+++ b/qsymm/kwant_continuum.py
@@ -206,7 +206,11 @@ def sympify(expr, locals=None):
                 "identifiers and may not be keywords".format(repr(k)))
 
     # sympify values of locals before updating it with extra_ns
-    locals = {k: sympify(v) for k, v in locals.items()}
+    # Cast numpy array values in locals to sympy matrices to make sure they have
+    # correct format
+    locals = {k: (sympy.Matrix(v) if isinstance(v, np.ndarray) else sympify(v))
+              for k, v in locals.items()}
+
     for k, v in extra_ns.items():
         locals.setdefault(k, v)
     try: