Python Cython类numpy固定大小数组声明
我试图在cython类中启动一个固定大小的数组,以便多个方法可以使用它。如何做到这一点Python Cython类numpy固定大小数组声明,python,cython,Python,Cython,我试图在cython类中启动一个固定大小的数组,以便多个方法可以使用它。如何做到这一点 cdef class My Class: cdef public np.ndarray[np.float, ndim=1] myarr def __cinit__(self,int history_length): self.myarr = np.empty(history_length, dtype=np.float) 我得到一个错误,说: 缓冲区类型仅允许作为函数局部变量
cdef class My Class:
cdef public np.ndarray[np.float, ndim=1] myarr
def __cinit__(self,int history_length):
self.myarr = np.empty(history_length, dtype=np.float)
我得到一个错误,说:
缓冲区类型仅允许作为函数局部变量
是否有方法声明此项并访问此项
谢谢我相信cython中更喜欢缓冲区语法类型[::1]
import numpy as np
cimport numpy as np
cdef class MyClass:
cdef float[::1] myarr
def __cinit__(self,int history_length):
self.myarr = np.empty(history_length, dtype=np.float)
编辑:上面的代码假设您在内存中定义了一个连续的数组,默认情况下,numpy数组是c样式(即行连续)。定义它float[:]将表明您期望的浮点缓冲区不一定是连续的。我认为cython中首选缓冲区语法类型[::1]
import numpy as np
cimport numpy as np
cdef class MyClass:
cdef float[::1] myarr
def __cinit__(self,int history_length):
self.myarr = np.empty(history_length, dtype=np.float)
编辑:上面的代码假设您在内存中定义了一个连续的数组,默认情况下,numpy数组是c样式(即行连续)。定义它float[:]将表明您期望的浮点缓冲区不一定是连续的。是否尝试在pxd中将其定义为类属性?是否相关?是否尝试在pxd中将其定义为类属性?是否相关?对应于python float类型的double[::1]不确定这是否在cython中成立,例如,还可以向double注册数据类型。但是你是对的,python没有float和double的区别。double[::1]对应于python的float类型不确定这在cython中是否成立,例如,dtype也可以注册为double。但你是对的,python没有浮点和双精度的区别。