Cython“无法为 cdef 类、结构或联合中的字段分配默认值”

2024-02-05

我正在第一次尝试将 Python 代码移植到 Cython。我对 C 的经验非常有限。我正在尝试创建一个相对简单的类来存储多维数组。为了解决这个问题,我们将属性时间保留为长度为 1 的单个一维数组。目前,我收到错误:

    cdef np.ndarray[np.int64_t, ndim=1] time = np.empty([1], dtype=np.int64)
                                       ^
------------------------------------------------------------
data.pyx:22:40: Cannot assign default value to fields in cdef classes, structs or unions

以下是最相关的文件。

data.pyx

import numpy as np
cimport numpy as np


cdef extern from "data_extern.h":

    cppclass _Data "Data":

        np.int64_t time64[1]
        double x_coord, y_coord, z_coord
        _Data(np.int64_t *time, double x, double y, double z)


cdef class Data:

    cdef _Data *thisptr
    cdef np.ndarray[np.int64_t, ndim=1] time = np.empty([1], dtype=np.int64)

    def __cinit__(self, np.int64_t time[1], x, y, z):
        self.thisptr = new _Data(&time[0], x, y, z)

    def __dealloc__(self):
        del self.thisptr

数据外部.h

#ifndef DATA_EXTERN_H
#define DATA_EXTERN_H

class Data {
    public:
        signed long long time64[1];
        double x_coord, y_coord, z_coord;
        Data();
        Data(signed long long time[1], double x, double y, double z;
        ~Data();
};

#endif

数据外部.cpp

#include <iostream>
#include "data_extern.h"

Data::Data () {}

// Overloaded constructor
Data::Data (signed long long time[1], double x, double y, double z {
    this->time64 = time[0];
    this->x_coord = x;
    this->y_coord = y;
    this->z_coord = z;
}

// Destructor
Data::~Data () {}

我认识到我的代码可能存在多个问题,但如果有人能为错误消息提供解释,我们将不胜感激。


问题如错误消息中所述:您无法为 cdef 类的 C 级属性设置默认值。您可以通过设置中的值来解决这个问题__cinit__构造函数如下:

cdef class Data:
    cdef _Data *thisptr
    cdef np.ndarray[np.int64_t, ndim=1] time

    def __cinit__(self, np.int64_t time[1], x, y, z):
        self.thisptr = new _Data(&time[0], x, y, z)
        self.time = np.empty([1], dtype=np.int64)

    def __dealloc__(self):
        del self.thisptr

但需要注意的是,整个 np.ndarray 语法已经过时了。除非你执意要使用 numpy 类型(这在你的代码中似乎是不必要的,因为你正在与某种 C++ 库交互),否则你可以使用更现代的类型化内存视图 https://cython.readthedocs.io/en/latest/src/userguide/memoryviews.html句法。您可以使用导入大小的整数类型from libc.stdint cimport *使用它们而不是 numpy 。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cython“无法为 cdef 类、结构或联合中的字段分配默认值” 的相关文章

  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • AWS EMR Spark Python 日志记录

    我正在 AWS EMR 上运行一个非常简单的 Spark 作业 但似乎无法从我的脚本中获取任何日志输出 我尝试过打印到 stderr from pyspark import SparkContext import sys if name m
  • 如何在Python中获取葡萄牙语字符?

    我正在研究葡萄牙语 角色看起来很奇怪 我怎样才能解决这个问题 代码 import feedparser import random Vou definir os feeds feeds conf feedurl http pplware s
  • 如何在ipywidget按钮中显示全文?

    我正在创建一个ipywidget带有一些文本的按钮 但按钮中未显示全文 我使用的代码如下 import ipywidgets as widgets from IPython display import display button wid
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • Pandas:merge_asof() 对多行求和/不重复

    我正在处理两个数据集 每个数据集具有不同的关联日期 我想合并它们 但因为日期不完全匹配 我相信merge asof 是最好的方法 然而 有两件事发生merge asof 不理想的 数字重复 数字丢失 以下代码是一个示例 df a pd Da
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate

随机推荐

  • 如何在 PHP 中绑定 SQL 变量?

    我想绑定变量而不是仅仅构建 SQL 字符串 无论如何要在 Php 中执行此操作吗 MySQL 或 PostgreSQL 的答案都会有帮助 Thanks 有例如PDO http docs php net pdo pdo 和准备好的语句 包括绑
  • 从布局 xml 文件旋转 ImageView 源

    我的布局中有这个 ImageView
  • Android 上的 flash.sensors.Accelerometer 在网络浏览器中

    加速度计UPDATE事件永远不会触发 但是isSupported当 Flash 应用程序在 Android Web 浏览器中运行时 返回 true 我怎样才能让它发挥作用 this accelerometer new Acceleromet
  • php/mysql 将行添加在一起以获得总计

    这是场景 我正在生成一份关于在特定时间段内需要缴纳会费的所有会员的报告 我成功选择每个数据库条目并将其显示为 html 表中的一行 问题是报告必须具有的总字段数 每个成员根据他们使用的服务支付不同的金额 因此我必须单独添加每个字段中的值以确
  • 服务器启动时的调用方法[重复]

    这个问题在这里已经有答案了 我试图在我的网络应用程序启动时调用一个方法 目的是启动一个计时器 以定义的时间间隔执行一些工作 当我的 jboss 7 1 Web 应用程序启动时 如何调用函数 helloworld 如果您想在 Web 应用程序
  • 如何使用 sqlalchemy-migrate 将列类型从字符变化更改为整数

    我正在使用 sqlalchemy migrate 来更改 Postgre SQL 数据库中表中的一列的类型 我使用的升级脚本是 cofing utf 8 from sqlalchemy import MetaData Table Colum
  • 如何将元标记设置为 部分中的第一个标记?

    我正在使用 JSF2 GlassFish 3 1 PrimeFaces 2 x 我在 IE9 上遇到奇怪的渲染问题 我应该能够通过插入以下内容来强制 IE9 呈现为 IE9 但问题是 它不起作用 因为 我被告知 元标记必须是该部分中的第一个
  • C# 中的堆栈溢出

    我有这个寄存器来注册我需要的所有对象 public static class ObjectRegister public static List
  • 在 WCF 服务库项目中使用自定义 ServiceHostFactory

    我正在编写一个 WCF 服务 该服务在内部严重依赖于控制反转 我想在自定义 ServiceHostFactory 内引导 初始化我的 IoC 容器 我读过一些可用的不同钩子的示例 但它们似乎都不适合我 This approach http
  • AntiForgeryToken 登录后无效

    我有一个用户可以在不登录的情况下发布的表格 但是 如果他的电子邮件被识别 则需要密码 密码表单通过 Ajax 进行验证 如果成功 则提交主表单 两种形式都需要有效的 AntiForgeryToken 问题是 密码检查作为副产品还会使用户登录
  • Android:如何以编程方式突出显示 EditText?

    requestFocus 将光标移动到编辑框 但不突出显示它 我想突出它 就像它被触摸一样 我怎样才能做到这一点 尝试这个 field setSelection int startIndex int endIndex 第一个参数 start
  • Xamarin 是否有 #if 或 #ifdef 来确定平台?

    例如 ifdef iOS ifdef android 等 如果有 if就更好了 iOS if MOBILE Console WriteLine MOBILE is defined endif if IOS Console WriteLine
  • 在包装物品的行上添加水平线分隔符

    我使用 css flexbox 在行中放置未知数量的项目 如果需要 可以环绕到其他行 我的问题是 每行之间是否可以有一条水平线 Here http codepen io anon pen jbQpvP这是我所拥有的一个简单的例子 如果打开
  • 如何使用last_insert_rowid插入多行?

    假设我有一个包含两个表的数据库Persons and PhoneNumbers 其中PhoneNumbers表有一个外键Persons 如果我想在一次事务中插入一个拥有电话号码的人 我可以编写如下查询 BEGIN TRANSACTION I
  • 如何在java代码中使用.dll文件?

    我有一个 dll 文件 我必须在 java 中使用它 此 dll 文件有一个参数化方法 该方法应返回字符串类型 当我向它传递参数时 我收到的消息为Native methods do not specify a body 这是代码 packa
  • 使用建议时,Visual Studio 2017 强制在方法名称处添加“async”(Ctrl + .)

    我在使用 Visual Studio 2017 时遇到问题 当我想使用 await 调用方法并按 Ctrl 时 要向方法添加 async VS2017将强制在方法名称处添加 async 这有时很有用 但在某些覆盖方法 如 OnNaviged
  • 如何使用 dplyr 中的排列来对组进行排序?

    我想对数据进行分组 然后排列表格 以便首先显示具有最高值的组 例如 在 mtcars 数据集中 我想按气缸数对汽车进行分组 然后排列表格 以便具有最高平均值的组mpg首先显示 mtcars gt group by cyl gt arrang
  • wpf中可点击图像映射的最佳方法

    我有一个包含 c WPF 中许多部分的图像 我想让每个部分都点击思考 我尝试将图像拆分为多个部分并在每个部分上创建事件 图像 但问题是图像的嵌套部分 制作图像地图的最佳方法是什么 您可以使用 Microsoft Expression Stu
  • 如何使用 JSHint 和 RequireJS 禁用警告“define”未定义

    我在我的项目中使用 RequireJS AMD 当我在项目上运行 jshint 时 它会抛出类似错误 在 AMD 脚本中 define is not defined 在 Mocha 测试用例中 describe is not defined
  • Cython“无法为 cdef 类、结构或联合中的字段分配默认值”

    我正在第一次尝试将 Python 代码移植到 Cython 我对 C 的经验非常有限 我正在尝试创建一个相对简单的类来存储多维数组 为了解决这个问题 我们将属性时间保留为长度为 1 的单个一维数组 目前 我收到错误 cdef np ndar