python - Cython 类 numpy 固定大小数组声明
问题描述
我试图在 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)
我收到一条错误消息:
buffer types only allowed as function local variables
有没有办法声明并访问它?
谢谢
解决方案
我相信缓冲区语法 type[::1] 在 cython 中是首选的,即
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[:] 将表明您期望浮动缓冲区不一定是连续的。
推荐阅读
- python - 为 PyPi 包配置 setup.py
- python - 从 Django 在另一个数据库中重新创建表
- java - Files.walkFileTree 与 Files.walk 在 Windows NTFS 上的性能
- deep-learning - 变压器模型在 Pytorch 中输出 Nan 值
- php - 隐藏目录中的文件
- javascript - 在屏幕捕获 api 中达到大小限制 (5 mb) 时上传 blob
- pycharm - pyplot 某些图像未显示在 PyCharm 的 SciView 选项卡中
- flutter - 孩子:CupertinoAlertDialog 颤振错误
- python - 为 API 获取请求创建 HMAC-SHA1 base 64 签名
- node.js - 如何解决异步回调的笑话测试用例中的异步超时?