在scipy 0.17中缺少插值

FLa*_*Lab 2 python numpy scipy

我正在使用scipy 0.17.1numpy 1.11.1.我在尝试使用时遇到错误interpolate,即使子包插值应该包含在我的版本中(docs)

import numpy as np
import scipy
x = np.linspace(0, 2*np.pi, 1000)
y = np.sin(x) + 0.01*np.random.randn(1, 1000)
y = scipy.interpolate.PchipInterpolator(x, y)
Run Code Online (Sandbox Code Playgroud)

结果有误:

Traceback (most recent call last):
  File "C:\Users\flabriol\AppData\Local\Continuum\Anaconda2\lib\site-packages\IPython\core\interactiveshell.py", line 2885, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-110-7dfbae0fdab5>", line 5, in <module>
    y = scipy.interpolate.PchipInterpolator(x, y)
AttributeError: 'module' object has no attribute 'interpolate'
Run Code Online (Sandbox Code Playgroud)

我可以interpolate不升级使用该模块scipy吗?

Gav*_*vin 12

根据scipy源 - 您需要显式导入子包:

子包

使用任何这些子包都需要显式导入.例如, import scipy.cluster.

如此改变(或添加)

import scipy.interpolate
Run Code Online (Sandbox Code Playgroud)

应该为你解决

  • @saintsfan342000 - 这个[问题](/sf/ask/1942133721/)和答案可能会有所启发:特别是这个[评论](/sf/ask/1942133721/#comment43908729_27744767)大概有关键点(即设计决策) (3认同)
  • 只是想知道你或其他人是否知道为什么 scipy 是这样的。Numpy 不是:我可以调用 numpy.random.rand 而无需显式导入 numpy.random。 (2认同)