I'm trying to fit a lorentzian to one of the peaks in my dataset.

We were given the fit for a gaussian, and aside from the actual fit equation, the code is very similar, so I'm not sure where I am going wrong. I don't see why there is an issue with the dimensions when I'm using `curve_fit`.

Here are the relevant pieces of my code for a better idea of what I'm talking about.

**Reading the CSV file in and trimming it**

```
import csv
import numpy as np 
import matplotlib.pyplot as plt 
from scipy.optimize import curve_fit
from matplotlib.ticker import StrMethodFormatter

#reading in the csv file 

with open("Data-Oscilloscope.csv") as csv_file: 

    csv_reader = csv.reader(csv_file, delimiter=",")
    time =[]
    voltage_raw = [] 

    for row in csv_reader:
        time.append(float(row[3]))
        voltage_raw.append(float(row[4]))
        print("voltage:", row[4])

#trimming the data 

trim_lower_index = 980
trim_upper_index = 1170

time_trim = time[trim_lower_index:trim_upper_index]
voltage_trim = voltage_raw[trim_lower_index:trim_upper_index]

```

**The Gaussian fit given**

```
#fitting the gaussian function 

def gauss_function(x, a, x0, sigma):
    return a*np.exp(-(x-x0)**2/(2*sigma**2))

popt, pcov = curve_fit(gauss_function, time_trim, voltage_trim, p0=[1,.4,0.1])
perr = np.sqrt(np.diag(pcov))

#plot of the gaussian fit 

plt.figure(2)
plt.plot(time_trim, gauss_function(time_trim, *popt), label = "fit")
plt.plot(time_trim, voltage_trim, "-b")
plt.show()

```

**My attempted Lorentzian fit**

```
#x is just the x values, a is the amplitude, x0 is the central value, and f is the full width at half max

def lorentz_function(x, a, x0,f):
    w = f/2 #half width at half max
    return a*w/ [(x-x0)**2+w**2]

popt, pcov = curve_fit(lorentz_function, time_trim, voltage_trim, p0=[1,.4,0.1])

```

I get an error running this that states:

> 
> in leastsq raise TypeError('Improper input: N=%s must not exceed M=%s' % (n, m))
> TypeError: Improper input: N=3 must not exceed M=1
> 
> 
> 

I'm probably missing something very obvious but just can't see it.

Thanks in advance!
EDIT: I have taken a look at other, similar questions and went through their explanations, but can't see how those fit in with my code because the number of parameters and dimensions of my inputs should be fine, given that they worked for the gaussian fit.