[英]Cython - Class with numpy attributes
我正在尝试通过使用cython
扩展类型来优化python类。 我的操作使用的是numpy
而没有建立索引,即分段加法,矩阵乘法,因此我的主要目标是减少python的开销。 我对类型声明最感兴趣:我应该使用numpy
还是cython
结构? 这是一个简单的例子:
cdef class Analyzer:
cdef float coeff
cdef float[:] v1, v2 #should I use memoryview? can I use a ndarray?
def __init__(self):
# some stuff ...
cpdef void func(self, matrix, vector):
# some stuff ...
cdef Py_ssize_t i
for i in range(big_number):
self.update_vectors(i)
self.v1 = matrix @ vector + self.coeff * self.v2 # all my operations are like this i.e. no indeces
# should I convert views to nd.arrays?
请注意,当我尝试self.coeff * self.v2
,由于没有将它们视为numpy数组,因此会出现错误:
Invalid operand types for '*' (float; float[:] *)
因此,由于我使用的是numpy
,没有必要仅为标准线性代数创建循环,因此,如何声明(类)属性类型以减少开销?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.