# numpy – Python AttributeError: function object has no attribute min

## numpy – Python AttributeError: function object has no attribute min

If this line

```
new_x = np.linspace(x.min(), x.max(), new_length)
```

is generating the error message

```
AttributeError: function object has no attribute min
```

then `x`

is a function, and functions (in general) dont have `min`

attributes, so you cant call `some_function.min()`

. What is `x`

? In your code, youve only defined it as

```
x=var
```

Im not sure what `var`

is. `var`

isnt a default builtin in Python, but if its a function, then either youve defined it yourself for some reason or youve picked it up from somewhere (say youre using Sage, or you did a star import like `from sympy import *`

or something.)

[Update: since you say youre using PyLab, probably `var`

is `numpy.var`

which has been imported into scope at startup in IPython. I think you really mean using IPython in `--pylab`

mode.]

You also define `x1`

and `y1`

, but then your later code refers to `x`

and `y`

, so it sort of feels like this code is halfway between two functional states.

Now `numpy`

arrays *do* have a `.min()`

and `.max()`

method, so this:

```
>>> x = np.array([0.1, 0.3, 0.4, 0.7])
>>> y = np.array([0.2, 0.5, 0.6, 0.9])
>>> new_length = 25
>>> new_x = np.linspace(x.min(), x.max(), new_length)
>>> new_y = sp.interpolate.interp1d(x, y, kind=cubic)(new_x)
```

would work. Your test data wont because the interpolation needs at least 4 points, and youd get

```
ValueError: x and y arrays must have at least 4 entries
```

Second question: how do I input more than one line of code at once? At the moment, if I try to copy the whole thing and then paste it into PyLab, it only inputs the top line of my code, so I have to paste the whole thing in one line at a time. How do I get round this?

Assuming youre in `ipython`

called as `ipython --pylab`

or something similar, then you can simply use the `paste`

magic command. Call it as `%paste`

or simply `paste`

if you havent defined `paste`

as another variable:

```
In [8]: paste
import numpy as np
import scipy as sp
from scipy.interpolate import interp1d
x=var
x1 = ([0.1,0.3,0.4])
y1 = [0.2,0.5,0.6]
new_length = 25
new_x = np.linspace(x.min(), x.max(), new_length)
new_y = sp.interpolate.interp1d(x, y, kind=cubic)(new_x)
## -- End pasted text --
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-8-b4e41f59d719> in <module>()
3 from scipy.interpolate import interp1d
4
----> 5 x=var
6 x1 = ([0.1,0.3,0.4])
7 y1 = [0.2,0.5,0.6]
NameError: name var is not defined
In [9]:
```

#### numpy – Python AttributeError: function object has no attribute min

Change that line to:

```
new_x = np.linspace(min(x), max(x), new_length)
```

`min`

and `max`

are not attributes of lists, they are their own functions.