具体地说:
numpy.ndarray
作为函数输出数据类型和cimport numpy
而不是import numpy
创建没有Python开销的数组?如果从行numpy.ndarray
中删除了cdef numpy.ndarray array(int start, int end):
,下面的代码将起作用。根据注释,它仍然有很多Python开销(不包括C ++向量的range(start, end)
初始化)。
%%cython -a
# distutils: language = c++
import numpy
from libcpp.vector cimport vector
cdef numpy.ndarray array(int start, int end):
cdef vector[int] vect = range(start, end)
return numpy.array(vect)
print(array(1,15))
答案 0 :(得分:0)
NumPy数组是Python对象。如果希望在编译级别使用它们,则应使用Cython支持的memoryviews。然后,您可以要求np.asarray(cython_memoryview_variable)
才能使用Python。
由于基本对象是C ++向量,因此不会自动将其内容转换为NumPy错误,因此您必须明确地解决这一问题(以复制为代价)。