【发布时间】:2018-01-04 04:55:46
【问题描述】:
我应该如何在 Cython 中声明布尔掩码的类型?我真的需要申报吗?示例如下:
cpdef my_func(np.ndarray[np.double_t, ndim = 2] array_a,
np.ndarray[np.double_t, ndim = 2] array_b,
np.ndarray[np.double_t, ndim = 2] array_c):
mask = ((array_a > 1) & (array_b == 2) & (array_c == 3)
array_a[mask] = 0.
array_b[mask] = array_c[mask]
return array_a, array_b, array_c
【问题讨论】:
-
为了完整起见,您的问题可能需要更多信息:实际的错误消息以及您构建
array_a&Co 的方式 -
我的猜测:应该是
np.bool而不是np.uint8_t,即cdef np.ndarray[np.bool, ndim = 2] mask... -
@ead 在使用
cdef np.ndarray[np.bool, ndim = 2]时会出现无效类型错误 -
我可以在代码中的任何地方声明类型还是必须在 def 之后的第一行?
标签: python numpy cython cythonize