我正在阅读 Scipy 和 Numpy 的官方文档,并在那里显示使用导入的默认方式:
>>> import numpy as np
但有时我在代码和演示文稿中看到人们使用这种方式加载Numpy包:
>>> from numpy import *
我知道加载此软件包的第二种方法简化了一些任务,但正如我在我的问题中所说,正式的方法是什么? (虽然文档显示了默认的方法)或者这是个人品味?
答案 0 :(得分:10)
由于以下问题,我将回答这个问题,而不是投票以基于意见的方式结束:
>>> import numpy as np
>>> bool(any(x < 3 for x in [10,20,30]))
False
>>> from numpy import *
>>> bool(any(x < 3 for x in [10,20,30]))
True
numpy
有自己的功能,例如any
和max
以及min
(这些只是想到的 - 这并不是详尽无遗的),哪个影子内置插件。 numpy版本不适合生成器表达式,并且它们不会警告您它们不会。真正发生在上面的是np.any
正在返回一个生成器,而生成器本身的bool值为True--这不是你想要的,你想要结果评估发电机。
>>> np.any(x < 3 for x in [10,20,30])
<generator object <genexpr> at 0xb3ba050c>
>>> bool(_)
True
现在公平,有时当我以交互方式工作时,我做使用星号导入 - 但这只是为了方便探索,而不是真正的代码。
因此,import numpy as np
远远优于from numpy import *
或from pylab import *
或使用任何环境,因为除非您已经知道危险,否则您很可能在您的代码中引入一个错误。你总是可以直接导入特定的函数(from numpy import sin, cos
等),有时这会使一些公式看起来更漂亮。
答案 1 :(得分:1)
import numpy as np
可让您通过说np.method()
来调用numpy的方法。如果您只使用import numpy
,则可以通过说numpy.method()
来调用numpy方法。如果你使用from numpy import *
,你可以通过调用method()
来单独使用这些方法,而不是使用*,你只需要通过说from numpy import method
导入所需的特定方法,然后通过方法调用方法使用method()
。就个人而言,我建议使用前两种方法之一(import numpy as np
或import numpy
)