Python'AttributeError:'function'对象没有属性'min''

Tom*_*son 12 python attributes numpy attributeerror

首先,对这两个问题的明显程度表示道歉; 我对此非常陌生,并且不知道我在做什么.

我正在尝试编写一些内容来将样条插值的Scipy函数应用于值数组.我的代码目前看起来像这样:

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)
Run Code Online (Sandbox Code Playgroud)

但当它到达线

new_x = np.linspace(x.min(), x.max(), new_length)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

AttributeError: 'function' object has no attribute 'min'
Run Code Online (Sandbox Code Playgroud)

到目前为止,谷歌搜索等没有发现任何我理解的内容.这是什么意思,我该如何解决?

第二个问题:如何一次输入多行代码?目前,如果我尝试复制整个内容然后将其粘贴到PyLab中,它只输入我的代码的顶行,所以我必须一次将整个内容粘贴到一行中.我怎么绕这个?

DSM*_*DSM 9

如果这一行

new_x = np.linspace(x.min(), x.max(), new_length)
Run Code Online (Sandbox Code Playgroud)

正在生成错误消息

AttributeError: 'function' object has no attribute 'min'
Run Code Online (Sandbox Code Playgroud)

然后x是一个函数,而函数(一般)没有min属性,所以你不能调用some_function.min().什么是x?在您的代码中,您只将其定义为

x=var
Run Code Online (Sandbox Code Playgroud)

我不确定是什么var. var不是Python内置的默认值,但是如果它是一个函数,那么你是出于某种原因自己定义它还是从某个地方选择它(比如你正在使用Sage,或者你做了一个明星导入就像from sympy import *或者其他的东西.)

[更新:因为你说你正在"使用PyLab",可能varnumpy.var在IPython启动时导入到范围内的.我认为你的意思是"在--pylab模式中使用IPython ."

还可以定义x1y1,但后来你以后的代码是指xy,所以它有点感觉这段代码在两个中途之间的功能状态.

现在numpy阵列有一个.min().max()方法,所以这样的:

>>> 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)
Run Code Online (Sandbox Code Playgroud)

会工作.您的测试数据不会因为插值需要至少4个点而且您得到了

ValueError: x and y arrays must have at least 4 entries
Run Code Online (Sandbox Code Playgroud)


Inb*_*ose 2

将该行更改为:

new_x = np.linspace(min(x), max(x), new_length)
Run Code Online (Sandbox Code Playgroud)

minmax不是列表的属性,它们是它们自己的函数。