【问题标题】:import problems with scipy.ioscipy.io 的导入问题
【发布时间】:2012-06-23 20:10:33
【问题描述】:

我一直在尝试开始使用 scipy,但该软件包给我带来了一些问题。本教程在很大程度上依赖于 scipy.io,但是当我导入 scypi 并尝试使用 scipy.io 时,出现错误:

In [1]: import scipy

In [2]: help(scipy.io)
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/home/chris/dev/scipy/<ipython-input-2-ef060398b31c> in <module>()
----> 1 help(scipy.io)

AttributeError: 'module' object has no attribute 'io'

我已经运行了系统更新,我卸载了 scipy 然后重新安装了它。

有趣的是,我可以这样导入模块:

In [1]: import scipy.io

但是当我尝试使用它时,我一使用方法就会出错:

In [2]: arr = scipy.array([[1.0,2.0],[3.0,4.0],[5.0,6.0]])
In [3]: outFile = file('tmpdata1.txt', 'w')
In [4]: scipy.io.write_array(outFile, arr)
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/home/chris/dev/scipy/<ipython-input-4-46d22e4ff485> in <module>()
----> 1 scipy.io.write_array(outFile, arr)

AttributeError: 'module' object has no attribute 'write_array'

我确定我错过了一些令人尴尬的基本内容,但我无法在 Google 或 stackoverflow 档案中找到此问题的答案。

【问题讨论】:

  • write_array 不在scipy.io 中,它在scipy.io.array_import 中。 scipy.io.array_import.write_array(在import scipy.io.array_import 之后)有效吗?你在学习什么教程?

标签: python import scipy


【解决方案1】:

这里有两件事。首先,您通常不能通过执行import package 然后尝试访问package.module 来访问包中的模块。你经常不得不做你所做的,import package.module,或者(如果你不想一直输入package.module,你可以做from package import module。所以你也可以做from scipy import io

其次,scipy.io 模块不提供write_array 功能。看起来也许它曾经是,但他们摆脱了它。您可能正在查看过时的教程。 (你在用什么教程?)谷歌搜索,似乎他们建议使用 numpy 的 savetxt 函数,所以你可能想研究一下。

【讨论】:

  • 是的,我使用的教程 (cutter.rexx.com/~dkuhlman/scipy_course_01.html) 似乎已经过时了。我什至不记得我现在是如何遇到它的,但我在 scipy 网站 (docs.scipy.org/doc/scipy/reference/tutorial) 上找到了我以后将使用的那个。也感谢您解决我的导入困惑!
  • 当时的文档还不算过时。 write_array 在您的原始帖子大约一年半之前从 scipy.io 移动到 scipy.io.array_import(非常),然后很快将其完全删除,以支持 savetxt 和朋友。
  • 此外,您现在可以直接使用ndarray 上的tofile 方法。这更容易。
  • 我很困惑..为什么只导入 scipy 时调用 scipy.io.foo 失败,而只导入 numpy 时调用 numpy.random.foo 成功?这里似乎不太一致!
  • @gota:因为有些库会自动导入它们的子模块,而另一些则不会(有些会自动导入一些子模块,但不会自动导入其他子模块)。在这种情况下,它看起来像 numpy 和 scipy 没有。如果有一个名为blah 的库,它可以执行from . import foo, bar,然后您将能够执行blah.foo.stuff 而无需显式执行import blah.foo,因为blah 已经为您导入了foo。但是如果库本身没有明确地这样做,它就不会隐式地完成。
猜你喜欢
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
  • 1970-01-01
  • 2016-08-28
  • 2016-10-18
  • 2015-05-26
  • 2021-11-02
  • 2021-06-30
相关资源
最近更新 更多