Cython引用numpy数组中的插槽

Cython引用numpy数组中的插槽,numpy,pointers,reference,cython,Numpy,Pointers,Reference,Cython,我有一个带有numpy数组实例变量的对象 在函数中,我想声明对该numpy数组中插槽的本地引用 例如: 原因是,我不想花时间实例化新变量和复制值 显然,上面的代码不起作用。不支持C++样式引用的一些内容。我如何做我想做的事?< P> C++引用不支持本地变量(即使在Cython的C++模式下),因为它们需要在创建时初始化,Cython更喜欢生成代码: # start of function double& x_ref # ... x_ref = something # assign #

我有一个带有numpy数组实例变量的对象

在函数中,我想声明对该numpy数组中插槽的本地引用

例如:

原因是,我不想花时间实例化新变量和复制值


显然,上面的代码不起作用。不支持C++样式引用的一些内容。我如何做我想做的事?

< P> C++引用不支持本地变量(即使在Cython的C++模式下),因为它们需要在创建时初始化,Cython更喜欢生成代码:
# start of function
double& x_ref
# ...
x_ref = something # assign
# ...
这确保变量作用域以“Python方式”而不是“C++方式”运行。但这确实意味着一切都需要默认可构造


<>但是,C++引用通常是用指针来实现的,所以解决方案只需使用指针:

cdef double* x1 = &self.array[1]
x1[0] = 2 # use [0] to dereference pointer
很明显C++引用使语法更好(你不必担心撤销和获得地址),但是性能明智的应该是相同的。
cdef double* x1 = &self.array[1]
x1[0] = 2 # use [0] to dereference pointer