python - Cython - 具有 numpy 属性的类
问题描述
我正在尝试通过使用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
并且没有必要仅为标准线性代数创建循环,我该如何声明(类)属性类型以减少开销?
解决方案
推荐阅读
- node.js - 如何在单个命令中使用 mochawesome 和 mocha-sonarqube-report?
- android - Android ZoomSDK - 会议服务监听器
- python - Python - 确保装饰函数保留元数据
- python - 数一下 Pandas Series 中有多少个初始元素等于某个值?
- python - Pandas - Induce an opening/closing bracket or induce a Negative sign before the number
- javascript - How can I create a if using the value of select?
- mysql - 聚合函数中的减法意外结果
- python - How to upgrade OpenCV in Anaconda (windows)?
- java - The recipient you have identified is not a valid recipient of the specified envelope
- hugo - Paginator doesn't override pagination settings