[英]Cython Class, create NumPy with Zeros
我试图创建一个cython类,该类创建一个带有零的NumPy。 后来我想在那个Numpy中写浮点值...我的python类看起来像这样:
class test:
def __init__(self, b):
self.b = b
self.eTest = np.zeros((100, 100))
到目前为止,我的cython类如下所示:
import numpy as np
cimport numpy as np
FTYPE = np.float
ctypedef np.float_t FTYPE_t
cdef class test:
def __init__(self, b):
cdef np.ndarray[FTYPE_t, ndim=2, mode='c'] eTest <<<works fine without this line
self.eTest = np.zeros((100,100), dtype=FTYPE)
我的cython代码目前无法正常运行。 我正在为如何在没有任何Python的情况下创建零(100、100)的NumPy而苦苦挣扎。 那有可能吗? 我对cython并不是很熟悉,很抱歉,如果我问一些非常琐碎的问题!
非常感谢您的所有帮助和建议!
重新定义您的课程::
cdef class test:
cdef double[:,:] eTest
def __init__(self, b):
cdef np.ndarray[FTYPE_t, ndim=2, mode='c'] tmp
tmp = np.zeros((100,100), dtype=FTYPE)
self.eTest = tmp
您的ndarray(在这种情况下为tmp
)只能在函数(在此情况下为构造函数)本地,因此您应首先将eTest
声明为支持缓冲区的类型(在我的示例中为memoryview),然后将ndarray复制到其中。
附带说明eTest
,我直接将零ndarray分配给eTest
:
cdef class test:
cdef double[:,:] eTest
def __init__(self, b):
self.eTest = np.zeros((100,100), dtype=FTYPE)
但是我保留了您的结构,以防您需要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.