【问题标题】:Cython: cimport and import numpy as (both) npCython:cimport 和 import numpy as (both) np
【发布时间】:2013-12-14 14:46:11
【问题描述】:

在Cython文档的tutorial中,有numpy模块的cimport和import语句:

import numpy as np
cimport numpy as np

我发现这种约定在 numpy/cython 用户中非常流行。

这对我来说看起来很奇怪,因为它们被命名为 np。 在代码的哪一部分,使用了导入/导入的 np? 为什么 cython 编译器不会混淆它们?

【问题讨论】:

  • 因为cimport 并没有真正导入(Python)模块。它导入(C) definitions。我不知道,但我可以想象,如果你只将第二行变成 cimport numpy,事情就会中断:它很可能需要脚本中使用的实际 Python 模块名称和定义命名空间之间的对应关系.
  • @Evert 你也可以使用cimport numpy,就像使用import numpy一样,它的工作方式是一样的,但是cimport提供了对C函数或属性的访问权限import 时将模块导入 Python 函数或属性

标签: python numpy cython python-import


【解决方案1】:

cimport my_module 提供对 C 函数或属性甚至my_module 下的子模块的访问权限

import my_module 允许访问my_module 下的Python 函数或属性或子模块。

在你的情况下:

cimport numpy as np

让您可以访问 Numpy C API,您可以在其中声明数组缓冲区、变量类型等...

还有:

import numpy as np

让您可以访问 NumPy-Python 函数,例如 np.arraynp.linspace

Cython 在内部处理这种歧义,因此用户不需要使用不同的名称。

【讨论】:

  • 作为一个小补充:正如@Saullo Castro 所暗示的,Numpy C API 并不提供 Python Numpy 提供的所有功能。要了解 C API 能做什么和不能做什么,您可以查看 Cython 安装中的 Includes folder。在那里您会找到 Cython 导入的 .pxd 文件。
猜你喜欢
  • 1970-01-01
  • 2016-02-10
  • 2014-11-02
  • 2015-04-11
  • 2019-04-23
  • 2023-03-07
  • 2019-06-07
  • 2015-10-01
  • 2013-04-05
相关资源
最近更新 更多