Python Cython将数组/向量发送到c++;剧本 < P >假设我们有一个1维的NUMPY数组或列表,我们用它作为函数的输入,即FUNC(NP.Salp[1.5,2.5,3.5)],其中这个函数来自一个被包装的C++类,我们的目标是在C++脚本中打印这个数组或向量的值。 但是,我不知道如何定义C++函数,并在PYX文件中指定它。我想问一下,您是否可以分享一个像具有上述功能一样简单的代码片段,其中低延迟是最重要的 基本上,在C++方面我想做: void func (/* where I don't what to write */) { std::cout << array_[0] << std::endl; // which prints 1.5 (since np.array[1.5, 2.5, 3.5][0] was 1.5) std::cout << array_[1] << std::endl; // which prints 2.5 (since np.array[1.5, 2.5, 3.5][1] was 2.5) std::cout << array_[2] << std::endl; // which prints 3.5 (since np.array[1.5, 2.5, 3.5][2] was 3.5) } void func(/*其中我不知道写什么*/){ 标准::cout a是一个包含指向零或多个int的指针的变量 n是a包含的值的数目
可以使用标准C++数组访问语法<代码> > [i] < /COD>索引。请确保<代码> iPython Cython将数组/向量发送到c++;剧本 < P >假设我们有一个1维的NUMPY数组或列表,我们用它作为函数的输入,即FUNC(NP.Salp[1.5,2.5,3.5)],其中这个函数来自一个被包装的C++类,我们的目标是在C++脚本中打印这个数组或向量的值。 但是,我不知道如何定义C++函数,并在PYX文件中指定它。我想问一下,您是否可以分享一个像具有上述功能一样简单的代码片段,其中低延迟是最重要的 基本上,在C++方面我想做: void func (/* where I don't what to write */) { std::cout << array_[0] << std::endl; // which prints 1.5 (since np.array[1.5, 2.5, 3.5][0] was 1.5) std::cout << array_[1] << std::endl; // which prints 2.5 (since np.array[1.5, 2.5, 3.5][1] was 2.5) std::cout << array_[2] << std::endl; // which prints 3.5 (since np.array[1.5, 2.5, 3.5][2] was 3.5) } void func(/*其中我不知道写什么*/){ 标准::cout a是一个包含指向零或多个int的指针的变量 n是a包含的值的数目,python,c++,cython,memoryview,Python,C++,Cython,Memoryview,可以使用标准C++数组访问语法 > [i] < /COD>索引。请确保 i 代码> < /p> C++头将看起来像: void func(int *a, int n); .pyx文件类似于 cdef extern from "myheader.hpp": void func(int *a, int n) def func_wrapper(int[::1] mview): func(&mview[0], mview.shape[0]) 你需要编译
C++头将看起来像:
void func(int *a, int n);
.pyx文件类似于
cdef extern from "myheader.hpp":
void func(int *a, int n)
def func_wrapper(int[::1] mview):
func(&mview[0], mview.shape[0])
你需要编译它,确保在源列表中列出你的Cython源文件和C源文件(.CPP文件,而不是头)。谢谢。因为我想在C++侧访问的数组有浮点数,我将它改为(浮点*A,int n)和(浮点[::1)MVIEW)。,这很有效。我希望这样做没问题。是的,这是处理浮点而不是整数的正确方法