Matriz de exponenciación en Python

Estoy tratando de exponer una matriz compleja en Python y me encuentro con algunos problemas. Estoy usando elscipy.linalg.expm función, y tengo un mensaje de error bastante extraño cuando intento el siguiente código:

import numpy as np
from scipy import linalg

hamiltonian = np.mat('[1,0,0,0;0,-1,0,0;0,0,-1,0;0,0,0,1]')

# This works
t_list = np.linspace(0,1,10)
unitary = [linalg.expm(-(1j)*t*hamiltonian) for t in t_list]

# This doesn't
t_list = np.linspace(0,10,100)
unitary = [linalg.expm(-(1j)*t*hamiltonian) for t in t_list]

El error cuando se ejecuta el segundo experimento es:

This works!
Traceback (most recent call last):
  File "matrix_exp.py", line 11, in <module>
    unitary_t = [linalg.expm(-1*t*(1j)*hamiltonian) for t in t_list]
  File "/usr/lib/python2.7/dist-packages/scipy/linalg/matfuncs.py",     line 105, in expm
    return scipy.sparse.linalg.expm(A)
  File "/usr/lib/python2.7/dist- packages/scipy/sparse/linalg/matfuncs.py", line 344, in expm
    X = _fragment_2_1(X, A, s)
  File "/usr/lib/python2.7/dist-  packages/scipy/sparse/linalg/matfuncs.py", line 462, in _fragment_2_1
    X[k, k] = exp_diag[k]
TypeError: only length-1 arrays can be converted to Python scalars

Esto parece realmente extraño ya que todo lo que cambié fue el rango det Estaba usando ¿Es porque el hamiltoniano es diagonal? En general, los hamiltonianos no lo serán, pero también quiero que funcione para los diagonales. Realmente no conozco la mecánica deexpm, por lo que cualquier ayuda sería muy apreciada.

Respuestas a la pregunta(1)

Su respuesta a la pregunta