searchsorted - 未定义全局名称“x”

时间:2016-03-01 22:06:48

标签: python numpy matplotlib

我正在尝试使用名为<script> window.CQURLInfo = window.CQURLInfo || {}; CQURLInfo.contextPath = ""; </script> 的{​​{1}}方法,但我无法使其正常工作。

这是代码:

numpy

并且,当我尝试构建此代码时,我收到一条错误消息:

searchsorted

有什么问题?我定义了我想要使用的x,但它说它不是。

希望你能帮助我。

3 个答案:

答案 0 :(得分:2)

您在x方法中定义了__init__。您的onselect未定义x

如果要在该实例的其他方法中使用x,可以执行

self.x = np.arange(0.0, 5.0, 0.01) # this is in __init__

然后在onselect中,您可以使用self.x

来引用它

答案 1 :(得分:2)

您只在x函数范围内定义局部变量__init__(),因此无法在此范围之外访问它。

如果您使用xself.x设置为实例属性,则可以通过onselect()再次通过self.x类方法访问它:

class Object(QMainWindow):
  def __init__(self):
    QMainWindow.__init(self)

    self.figure_canvas = FigureCanvas(Figure())
    self.axes = self.figure_canvas.add_subplot(111)

    self.x = np.arange(0.0, 5.0, 0.01)
    y = np.sin(2*np.pi*x) + 0.5*np.random.randn(len(x))
    self.axes.plot(x, y, "-", picker = 5)
    self.axes.set_ylim(-2, 2)

  def onselect(self, xmin, xmax):
    indmin, indmax = np.searchsorted(self.x, (xmin, xmax)

答案 2 :(得分:1)

在onselect()函数中,没有声明x值

试试这个:

def __init__(self):
  ...
  self.x = np.arange(0.0, 5.0, 0.01)

def onselect(xmin, xmax):
  indmin, indmax = np.searchsorted(self.x, (xmin, xmax)