尝试从其他包中 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 定义的正确方法是什么?
我已经知道在 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)