Python 'AttributeError: 'function' object has no attribute 'min''

后端 未结 6 2215
予麋鹿
予麋鹿 2021-02-07 15:12

Firstly, apologies for how obvious these two questions seem to be; I\'m very very new to this and don\'t have a clue what I\'m doing.

I\'m trying to write something to a

6条回答
  •  故里飘歌
    2021-02-07 15:24

    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) don't have min attributes, so you can't call some_function.min(). What is x? In your code, you've only defined it as

    x=var
    

    I'm not sure what var is. var isn't a default builtin in Python, but if it's a function, then either you've defined it yourself for some reason or you've picked it up from somewhere (say you're using Sage, or you did a star import like from sympy import * or something.)

    [Update: since you say you're "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 won't because the interpolation needs at least 4 points, and you'd get

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

提交回复
热议问题