当前位置: 首页 > 面试题库 >

导入numpy和Scipy软件包的模块/子软件包的差异

葛言
2023-03-14
问题内容

我正在通过Anaconda 2.1.0发行版使用scipy和numpy。我使用Spyder作为我的Python IDE。

当我运行时 import scipy as sp,我无法通过以下方式访问子包,例如optimize,linalg,cluster等。sp.

但是,运行时import numpy as np,我可以通过访问所有子包,例如linalg,random,matrixlib,多项式,测试等np

两种进口的工作方式不同,是否有原因?为什么不import scipy as sp将所有scipy子包都捕获到sp的命名空间中?


问题答案:

通过设计python语言,可能会发生不同的导入行为。

默认情况下,模块(*)的import语句仅导入主模块,而不导入子模块。主模块可能(如的情况下numpy),也可能(如scipy)不导入部分或全部子模块。

其原因如下scipy:在大多数情况下,您只需要scipy包的一个子模块。此默认行为不会在加载代码不需要的子模块时将解释器挂起。

编辑:请注意,numpy默认情况下不会导入所有子模块,例如,它不会加载numpy.f2py,有关更多详细信息,请参阅此问题/答案。

(*)在这里我的意思是一个导入语句,例如import scipyimport scipy as sp,其中加载了模块。当然,如果您编写该代码,import scipy.optimize则python将首先加载主模块,然后加载子模块。



 类似资料:
  • 什么是包裹? package语句将当前命名上下文切换到指定的命名空间(符号表)。 因此 - 包是一组代码,它们位于自己的命名空间中。 命名空间是唯一变量名称的命名集合(也称为符号表)。 命名空间可防止包之间发生变量名冲突。 软件包可以构建模块,这些模块在使用时不会破坏模块自身命名空间之外的变量和函数。 该包保持有效,直到调用另一个包语句,或直到当前块或文件的结尾。 您可以使用:: package限

  • 问题内容: 我可能会丢失一些显而易见的东西,但是无论如何: 当您像在python中那样导入软件包时,您可以直接使用任何子模块/子软件包。例如,这有效: 但是我有自己的软件包,其结构如下: 并且这里相同的逻辑不起作用: 我究竟做错了什么? 问题答案: 您需要导入子模块: 您正在寻找的是。您可以通过将(或)放入来解决它,然后Python就能在其中找到。但我建议使用我的第一个建议。

  • 问题内容: 我在构建会话bean 时遇到了麻烦。 找不到以下内容: 一些解决方案暗示将库和.jar 添加到Java构建路径。 我正在使用并且在给定位置($ JAVA_HOME \ lib)找不到这些库中的任何一个。我在机器上使用eclipse(kepler) 问题答案: javaee.jar既不提供eclipse也不提供java(jdk)。该文件必须手动下载并添加到项目构建路径。可以在此处找到ja

  • Tazpkg - 软件包管理器 Slitaz提供一个小型软件包管理器,它能轻易在系统里安装许多软件。Tazpkg是一个由SHell脚本写的轻量级的软件包管理器,能安 装.tazpkg文件。它能在Busybox、ash shell和bash中正常运行。Tazpkg可以让你列出软件包列表、安装软件包、删除软件包、下载软件包、解压软件包、打包软件包、查找软件包或者取 得有关可用软件包或所有已安装软件包的

  • 问题内容: 伙计们,在上面的程序中,在执行过程中我发现了这些错误。怎么解决?我已经在文件夹位置下载了Jsoup.jar文件。我该怎么办? 问题答案: 当然是Jsoup的。 另请参阅Jsoup API文档。 也就是说,还有一个问题只有在运行时才会显现:您以ajava.lang.String而不是a的形式传递。AString将被视为纯HTML,而不是资源。也修复它: 更新:您只需要确保在编译时和运行时

  • 问题内容: 从http://cs-fundamentals.com/tech-interview/java/which-java-package-is- imported-by-default.php 在每个Java程序中,可以有一个未命名的程序包,它只是一个没有名称的程序包。如果在编写类定义时省略了package语句,则将类名放入默认包中,该包没有名称。Java编译器会自动导入此软件包。 真的吗