scipy curve_fit no le gusta el módulo matemático

Al intentar crear un ejemplo conscipy.optimize curve_fit Descubrí que scipy parece ser incompatible con Pythonmath módulo. Mientras que la funciónf1 funciona bien,f2 lanza un mensaje de error.

from scipy.optimize import curve_fit
from math import sin, pi, log, exp, floor, fabs, pow

x_axis = np.asarray([pi * i / 6 for i in range(-6, 7)])  
y_axis = np.asarray([sin(i) for i in x_axis])

def f1(x, m, n):
    return m * x + n

coeff1, mat = curve_fit(f1, x_axis, y_axis)    
print(coeff1)

def f2(x, m, n):
    return m * sin(x) + n 

coeff2, mat = curve_fit(f2, x_axis, y_axis)  
print(coeff2)

El rastreo completo es

Traceback (most recent call last):
  File "/Documents/Programming/Eclipse/PythonDevFiles/so_test.py", line 49, in <module>
    coeff2, mat = curve_fit(f2, x_axis, y_axis)
  File "/usr/local/lib/python3.5/dist-packages/scipy/optimize/minpack.py", line 742, in curve_fit
    res = leastsq(func, p0, Dfun=jac, full_output=1, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/scipy/optimize/minpack.py", line 377, in leastsq
    shape, dtype = _check_func('leastsq', 'func', func, x0, args, n)
  File "/usr/local/lib/python3.5/dist-packages/scipy/optimize/minpack.py", line 26, in _check_func
    res = atleast_1d(thefunc(*((x0[:numinputs],) + args)))
  File "/usr/local/lib/python3.5/dist-packages/scipy/optimize/minpack.py", line 454, in func_wrapped
    return func(xdata, *params) - ydata
  File "/Documents/Programming/Eclipse/PythonDevFiles/so_test.py", line 47, in f2
    return m * sin(x) + n 
TypeError: only length-1 arrays can be converted to Python scalars

El mensaje de error aparece con listas ynumpy matrices como entrada por igual. Afecta a todosmath funciones, probé (ver funciones en importación) y debe tener algo que ver con cómo el módulo matemático manipula los datos de entrada. Esto es más obvio conpow() función: si no importo esta función desdemath, curve_fit funciona correctamente conpow().

La pregunta obvia: ¿por qué sucede esto y cómo puedemath funciones se utilizarán concurve_fit?

P.S .: Por favor, no discuta que no se deben ajustar los datos de la muestra con un ajuste lineal. Esto fue elegido para ilustrar el problema.

Respuestas a la pregunta(1)

Su respuesta a la pregunta