Python'AttributeError:'function'对象没有属性'min' [英] Python 'AttributeError: 'function' object has no attribute 'min''
问题描述
首先,对这两个问题看起来如此明显的道歉;我对此非常陌生,不知道我在做什么.
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.
我正在尝试编写一些东西,以将Scipy函数用于样条插值到值数组.我的代码当前如下所示:
I'm trying to write something to apply the Scipy function for spline interpolation to an array of values. My code currently looks like this:
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)
但是当它到达那行
new_x = np.linspace(x.min(), x.max(), new_length)
我收到以下错误:
AttributeError: 'function' object has no attribute 'min'
,到目前为止,谷歌搜索等并没有使我理解.这是什么意思,我该如何解决?
and so far googling etc has turned up nothing that I understand. What does this mean and how do I fix it?
第二个问题:如何一次输入多行代码?目前,如果我尝试复制整个内容,然后将其粘贴到PyLab中,则它只输入代码的第一行,因此我必须一次将整个内容粘贴到一行中.我如何解决这个问题?
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?
推荐答案
如果这行
new_x = np.linspace(x.min(), x.max(), new_length)
正在生成错误消息
AttributeError: 'function' object has no attribute 'min'
然后 x
是一个函数,并且函数(通常)没有 min
属性,因此您不能调用 some_function.min()
.什么是 x
?在您的代码中,您仅将其定义为
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
我不确定 var
是什么. var
并不是Python中的默认内置函数,但是如果它是一个函数,那么您要么是出于某种原因自己定义了它,要么是从某个地方摘下来的(例如,您使用的是Sage),或者您执行了像 from sympy import *
之类的星形导入.)
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.)
[更新:由于您说的是使用PyLab",因此 var
可能是 numpy.var
,它已在IPython启动时导入到作用域中.我认为您的意思是在-pylab
模式下使用IPython.]
[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.]
您还定义了 x1
和 y1
,但是后来的代码引用了 x
和 y
,因此感觉就像这段代码位于两个功能状态之间.
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.
现在 numpy
数组 do 具有 .min()
和 .max()
方法,因此:
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)
会工作.您的测试数据不会因为插值至少需要4点而得到
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
这篇关于Python'AttributeError:'function'对象没有属性'min'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!