【发布时间】:2016-09-03 00:36:44
【问题描述】:
正如标题建议的那样,我想有效地对numpy.vectorize 函数进行cythonize,它的核心是简单化下面的这篇文章(完整的函数太长了,无法发布,但大部分时间都花在了这里):
def func(*vargs):
for _n, _i in enumerate(inds):
the_args[_i] = vargs[_n]
kwargs.update(zip(names, vargs[len(inds):]))
return self.pyfunc(*the_args, **kwargs)
我已经阅读了这些指南(http://cython.readthedocs.io/en/latest/src/tutorial/numpy.html 和 http://pandas.pydata.org/pandas-docs/stable/enhancingperf.html),它们非常有用,但我对 C 的了解太窄,无法充分发挥它们的潜力。
你会怎么做呢? [Python 3.5.1、Cython 0.25a、Numpy 1.10.4]
【问题讨论】:
-
我怀疑你是否可以。您正在迭代具有未知维数的数组并调用返回未知类型的 python 函数。您必须在代码中非常灵活,因此 Cython 不太可能提供帮助。
-
你还在坚持
pyfunc,这是一个cython无法转换为c的黑盒python函数吗? -
我正在尝试的东西正在减慢或无法正常工作。我想过像在指南之一
np.ndarray[DTYPE_t, ndim=2] , cdef np.ndarray[DTYPE_t, ndim=2] h = ...中那样定义 ndarray 类型,但它似乎不起作用
标签: python numpy vectorization cython