小编wea*_*man的帖子

编译 Cython 文件时出错:在包中找不到 pxd

尝试从其他包中 cimport pxd 定义。

简单的例子,一个.pxd文件:

cdef inline void a():
    print "a"
Run Code Online (Sandbox Code Playgroud)

b.pyx 文件:

cimport a

def b():
    a.a()
Run Code Online (Sandbox Code Playgroud)

到这里为止,一切正常,并且$ cython b.pyx可以正常工作。

如果我将 a.pxd 移动到一个文件夹,例如libs/,那么我将 b.pyx 更改为:

from libs cimport a

def b():
    a.a()
Run Code Online (Sandbox Code Playgroud)

然后我有错误:

$ cython b.pyx 

Error compiling Cython file:
------------------------------------------------------------
...
from libs cimport a
^
------------------------------------------------------------

b.pyx:1:0: 'a.pxd' not found

Error compiling Cython file:
------------------------------------------------------------
...
from libs cimport a
^
------------------------------------------------------------

b.pyx:1:0: 'libs/a.pxd' not found
Run Code Online (Sandbox Code Playgroud)

但是 libs/a.pxd 就在那里。从其他包导入 pxd 定义的正确方法是什么?

cython

9
推荐指数
1
解决办法
5239
查看次数

您可以改进代码 - 3D 数组中的迭代吗?

我已经知道在 python 中对数组的迭代非常慢。如果可能,您能否改进此代码。我只想从 numpy 数组中获取值,这些值大于 constat (1.4) 否则设置为零。

def array_max(a):
   b = a
   for i in range(a.shape[0]):
      for j in range(a.shape[1]):
         for k in range(a.shape[2]):
            if a[i, j, k] <= 1.4:
               b[i,j,k] = 0
    return b
Run Code Online (Sandbox Code Playgroud)

python arrays performance for-loop numpy

1
推荐指数
1
解决办法
55
查看次数

标签 统计

arrays ×1

cython ×1

for-loop ×1

numpy ×1

performance ×1

python ×1