首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Numpy in Cython,没有改进

Numpy in Cython,没有改进
EN

Stack Overflow用户
提问于 2015-05-04 17:23:44
回答 1查看 327关注 0票数 2

我正在用cython编写一个使用numpy的简单函数,但似乎cython在转换为C++时产生了大量的API。有人能帮我解决这个错误吗?我在cython文档中没有发现更多的东西。

operations.pyx:

代码语言:javascript
复制
import numpy as np
cimport numpy as np
import cython
cimport cython

@cython.boundscheck(False)
@cython.wraparound(False)
@cython.nonecheck(False)
def diff(np.ndarray[np.float64_t, ndim=2] a,
         np.ndarray[np.float64_t, ndim=2] b):
    cdef int cols = 100
    cdef int rows = 100
    for _ in range(1000):
        for i in range(rows):
            b[i, 0] = (a[i, 1] - a[i, cols - 1]) / 2
        for i in range(1, cols - 1):
            b[:, i] = (a[:, i + 1] - a[:, i - 1]) / 2
        for i in range(rows):
            b[i, cols - 1] = (a[i, 0] - a[i, cols - 2]) / 2
    return

我在pythoncython上的速度差不多。如果更改列选择(:),情况会变得更糟(慢5倍)。有人能告诉我错误可能在哪里吗?

来自cython注释的html:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-04 17:36:12

循环使用ij (和_)作为python对象,尝试cdef-ing它们;例如:

代码语言:javascript
复制
cdef int cols = 100
cdef int rows = 100
cdef int i = 0
cdef int j = 0

由于您没有在_上执行操作,所以我认为Cython处理它是正确的,不需要是cdef,但是您可以尝试(无论如何,它只是一行)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30036117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档