为什么我不能通过 import scipy as sp 来使用 sp.signal?

Fra*_*hao 6 python scipy enthought

我想使用scipy.signal.ltiscipy.signal.impulse函数来计算传递函数。我scipy通过以下方式导入模块。

import scipy as sp
import numpy as np
import matplotlib.pyplot as plt
from math import *
Run Code Online (Sandbox Code Playgroud)

但是,当我输入以下脚本时,

tf = sp.signal.lti(numH, denH)
Run Code Online (Sandbox Code Playgroud)

内核报错:

---> 10 tf = sp.signal.lti(numH, denH)
AttributeError: 'module' object has no attribute 'signal' 
Run Code Online (Sandbox Code Playgroud)

我尝试了另一种方法来导入信号模块,

from scipy.signal import lti, step, impulse
Run Code Online (Sandbox Code Playgroud)

然后,脚本运行,

tf = lti(numH, denH)
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是,我们必须导入脚本中的每个子包吗?那么导入包有什么意义呢scipy

谢谢。

hpa*_*ulj 4

来自scipy文档:

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

或者from scipy import cluster

做一个简单的事情没有多大意义

import scipy
Run Code Online (Sandbox Code Playgroud)

查看该site-packages/scipy/__init__.py文件以获取更多详细信息。与 init 进行比较numpy

numpy是一个集成包,scipy是松散集成包的集合。 numpy是每个人都使用的基本数字包。子scipy包之间相对独立。我可以sparse在不了解signalintegrate软件包的情况下加载和使用。