# scipy.interpolate.BSpline.basis_element#

classmethod BSpline.basis_element(t, extrapolate=True)[source]#

Return a B-spline basis element `B(x | t, ..., t[k+1])`.

Parameters:
tndarray, shape (k+2,)

internal knots

extrapolatebool or ‘periodic’, optional

whether to extrapolate beyond the base interval, `t .. t[k+1]`, or to return nans. If ‘periodic’, periodic extrapolation is used. Default is True.

Returns:
basis_elementcallable

A callable representing a B-spline basis element for the knot vector t.

Notes

The degree of the B-spline, k, is inferred from the length of t as `len(t)-2`. The knot vector is constructed by appending and prepending `k+1` elements to internal knots t.

Examples

Construct a cubic B-spline:

```>>> import numpy as np
>>> from scipy.interpolate import BSpline
>>> b = BSpline.basis_element([0, 1, 2, 3, 4])
>>> k = b.k
>>> b.t[k:-k]
array([ 0.,  1.,  2.,  3.,  4.])
>>> k
3
```

Construct a quadratic B-spline on `[0, 1, 1, 2]`, and compare to its explicit form:

```>>> t = [0, 1, 1, 2]
>>> b = BSpline.basis_element(t)
>>> def f(x):
...     return np.where(x < 1, x*x, (2. - x)**2)
```
```>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots()
>>> x = np.linspace(0, 2, 51)
>>> ax.plot(x, b(x), 'g', lw=3)
>>> ax.plot(x, f(x), 'r', lw=8, alpha=0.4)
>>> ax.grid(True)
>>> plt.show()
```