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中,它只输入我的代码的顶行,所以我必须一次将整个内容粘贴到一行中.我怎么绕这个?
如果这一行
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",可能var是numpy.var在IPython启动时导入到范围内的.我认为你的意思是"在--pylab模式中使用IPython ."
还可以定义x1和y1,但后来你以后的代码是指x和y,所以它有点感觉这段代码在两个中途之间的功能状态.
现在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)
将该行更改为:
new_x = np.linspace(min(x), max(x), new_length)
Run Code Online (Sandbox Code Playgroud)
min和max不是列表的属性,它们是它们自己的函数。
| 归档时间: |
|
| 查看次数: |
66001 次 |
| 最近记录: |