MikeJfromVA - 1 year ago 90
Python Question

# How does matplotlib accept function parameters? Are they lambdas?

The following syntax is very intuitive. Run in Spyder, and it plots a nonlinear function.

``````import numpy as numpy
import matplotlib.pyplot as plot

x = numpy.arange(0, 1, 0.01)

def nonlinear(x, deriv=False): #sigmoid
if (deriv==True):
return x*(1-x)

return 1/(1-numpy.exp(-x))

plot.plot(x, nonlinear(x))
``````

My question is, how is the function
`nonlinear`
passed to
`plot.plot`
? Is it a lambda? How is
`nonlinear`
accepting an array without crashing when it does math ops?

It works fine because the usual arithmetic operations (e.g. `/` and `-` as you've used) are defined for numpy arrays; they're just performed element-wise. The same goes for `np.exp()`. You can see exactly what `nonlinear(x)` looks like for yourself (it's also a numpy array):

``````>>> import numpy as np
>>> def nonlinear(x): return 1/(1 + np.exp(-x))
...
>>> nonlinear(np.arange(0, 1, 0.1))
array([ 0.5       ,  0.52497919,  0.549834  ,  0.57444252,  0.59868766,
0.62245933,  0.64565631,  0.66818777,  0.68997448,  0.7109495 ])
``````

You're just finding the value of the sigmoid evaluated at each point in the specified range, and passing those as the y-values to `plot`.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download