数组的 cython / numpy 类型

2023-12-15

我正在尝试构造一个 python 类型 int 的矩阵,一个 64 位有符号整数。

cdef matrix33():
    return np.zeros((3,3),dtype=int)

cdef do_stuf(np.ndarray[int, ndim=2] matrix):
    ...
    return some_value

def start():
    print do_stuf(matrix33())

它编译正确,但当我运行它时,我不断收到此错误:

ValueError: Buffer dtype mismatch, expected 'int' but got 'long'

我无法使用 python long,但我不知道如何正确转换为 64 int。

UPDATE

好的。我很确定我正确使用了 Cython。我编写的代码用于 capture go / atari go 游戏中的最小最大搜索。

到目前为止,最常被调用的函数是:

cdef isThere_greedy_move(np.ndarray[np.int64_t, ndim=2]board, int player):
    cdef int i, j
    for i in xrange(len(board)):
        for j in xrange(len(board)):
            if board[i,j] == 0:
                board[i,j] = player
                if player in score(board):
                    board[i,j] = 0
                    return True
                board[i,j] = 0
    return False


# main function of the scoring system.
# returns list of players that eat a stone
cdef score(np.ndarray[np.int64_t, ndim=2] board):
    scores = []
    cdef int i,j
    cdef np.ndarray[np.int64_t, ndim = 2] checked
    checked = np.zeros((board.shape[0], board.shape[1]), dtype = int)
    for i in xrange(len(board)):
        for j in xrange(len(board)):
            if checked[i,j] == 0 and board[i,j] !=0:
                life, newly_checked = check_life(i,j,board,[])
                if not life:
                    if -board[i,j] not in scores:
                        scores.append(-board[i,j])
                        if len(scores) == 2:
                            return scores
                checked = update_checked(checked, newly_checked)
    return scores

# helper functions of score/1
cdef check_life(int i, int j, np.ndarray[np.int64_t, ndim=2] board, checked):
    checked.append((i,j))
    if liberty(i,j,board):
        return True, checked
    for pos in [[1,0],[0,1],[-1,0],[0,-1]]:
        pos = np.array([i,j]) + np.array(pos)
        if check_index(pos[0],pos[1],len(board)) and board[pos[0],pos[1]] == board[i,j] and (pos[0],pos[1]) not in checked:
            life, newly_checked = check_life(pos[0],pos[1],board,checked)
            if life:
                checked = checked + newly_checked             
                return life, checked
    return False, []    # [] is a dummy.

cdef liberty(int i,int j, np.ndarray[np.int64_t, ndim=2] board):
    for pos in [np.array([1,0]),np.array([0,1]),np.array([-1,0]),np.array([0,-1])]:
        pos = np.array([i,j]) - pos
        if check_index(pos[0],pos[1],len(board)) and board[pos[0],pos[1]] == 0:
            return True
    return False

我真的以为这将是 cython 发光的机会。 要解决 3x3 捕获问题,请执行以下操作:

Python 2.7 一致为 2.28 秒,使用 cython 则一致为 2.03 两者均使用 python time 模块并在低于 60C° 的 i7 处理器上进行了测试

现在我的问题是我是否要切换到 Haskell 还是 C++ 来完成这个项目......


赛通的int类型与 C 相同int,即通常(但不一定)32 位。您应该声明dtype in matrix33 as np.int64 and in do_stuf作为其 C 对应物,np.int64_t:

cimport numpy as np
import numpy as np

cdef do_stuff(np.ndarray[np.int64_t, ndim=2] matrix):
    pass

cdef matrix33():
    return np.zeros((3,3), dtype=int)

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

数组的 cython / numpy 类型 的相关文章

  • Python 将列表中的字符串转换为数字

    我遇到了以下错误消息 以 10 为基数的 int 的文字无效 2 2 外部用单引号括起来 内部用双引号括起来 该数据位于primes列出使用print primes 0 样本数据在primes list 2 3 5 7 The primes
  • 地图与星图的性能?

    我试图对两个序列进行纯Python 没有外部依赖 逐元素比较 我的第一个解决方案是 list map operator eq seq1 seq2 然后我发现starmap函数来自itertools 这看起来和我很相似 但事实证明 在最坏的情
  • Python 可以使用单独的媒体播放器打开 mp3 文件吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否可以开一个mp3Python 中的文件 可以使用Popen 我并不是要在程序中运行它 我的意思是作为媒体播放器中的一个单独窗口或其
  • SMTPAuthenticationError: (535, b'5.7.8 用户名和密码在 Django 生产中不被接受?

    我在 Heroku 上部署了一个 Django 应用程序 在其中一节中 我使用 SMTP Gmail 设置向用户发送电子邮件 当我在本地运行项目时 电子邮件发送成功 但在 Heroku 上部署的项目上却发送失败 我在 Stackoverfl
  • Weasyprint 在调用 write_pdf 时获得未定义的属性:“AttributeError:‘PosixPath’对象没有属性‘read_text’”

    我正在 ubuntu 18 04 上运行 weasyprint 项目 并尝试创建一个 pdf 当我尝试设置页脚图像时 问题就开始了 我正在 python 3 6 7 上运行 这是我调用 weasyprint 的代码 import sys i
  • Python MySQL 模块

    我正在开发一个需要与 MySQL 数据库交互的 Web 应用程序 但我似乎找不到任何真正适合 Python 的模块 我特别寻找快速模块 能够处理数十万个连接 和查询 所有这些都在短时间内完成 而不会对速度产生重大影响 我想我的答案将是游戏领
  • 更改Python pylab玫瑰/极坐标图中图例标题的字体大小

    我正在尝试更改玫瑰图或 极地 图上现有图例标题的字体大小 大部分代码是由不在的其他人编写的 我已经添加 ax legend title legend title setp l get title fontsize 8 添加标题 legend
  • ValueError:在 R 中使用 keras 模型时在用户代码中

    我正在尝试使用 R 在 R 中运行一维 CNNkeras包裹 我正在使用以下代码 library MASS library keras Create some data data Boston data lt Boston create a
  • numpy 数组最快的保存和加载选项

    我有一个生成二维的脚本numpy数组与dtype float和形状的顺序 1e3 1e6 现在我正在使用np save and np load对数组执行 IO 操作 然而 这些函数对于每个数组都需要几秒钟的时间 是否有更快的方法来保存和加载
  • 使用子图绘制 pandas 数据框 (subplots=True):放置图例并使用紧凑的布局

    我真的很喜欢 pandas 来处理和分析大数据集 到目前为止 我主要使用 matplotlib 进行绘图 但现在想使用 pandas 自己的绘图功能 基于 matplotlib 因为它需要更少的代码 并且在大多数情况下对我来说似乎足够了 尤
  • 在 Ubuntu 上使用 Python 获取显示器分辨率

    对于 Ubuntu win32api 中是否有与 GetSystemMetrics 相当的代码 我需要获取显示器的宽度和高度 以像素为单位 我可以建议一些可以使用的方法 不过我还没有使用过 xlib 版本 1 xlib Python 程序的
  • 图像堆栈的最大强度投影

    我正在尝试重新创建该功能 max array 3 来自 MatLab 它可以获取 N 个图像的 300x300px 图像堆栈 我在这里说 图像 因为我正在处理图像 实际上这只是一个大的双数组 300x300xN 并创建一个 300x300
  • 为图例中的点设置固定大小

    我正在制作一些散点图 我想将图例中的点的大小设置为固定的相等值 现在我有这个 import matplotlib pyplot as plt import numpy as np def rand data return np random
  • 对于 pygtk 应用程序来说,什么是好的嵌入式浏览器?

    我计划在我的 pygtk 应用程序中使用嵌入式浏览器 并且我正在 gtkmozembed 和 pywebkitgtk 之间进行辩论 两者之间有什么引人注目的区别吗 还有我不知道的第三种选择吗 应该注意的是 我不会使用它来访问网络上的内容 我
  • Python3.1中的视图?

    Python3 1中的视图到底是什么 它们的行为方式似乎与迭代器类似 并且它们也可以具体化为列表 迭代器和视图有何不同 据我所知 视图仍然附加到创建它的对象上 对原始对象的修改会影响视图 来自docs http docs python or
  • Python 类方法的示例用例是什么?

    我读了Python 中的类方法有什么用 https stackoverflow com questions 38238 what are class methods in python for但那篇文章中的例子很复杂 我正在寻找 Pytho
  • 安排 Asyncio 任务每 X 秒执行一次?

    我正在尝试创建一个 python 不和谐机器人 它将每隔 X 秒检查一次活跃会员 并根据会员的在线时间奖励积分 我正在使用 asyncio 来处理聊天命令 这一切都正常 我的问题是找到一种方法来安排每隔 X 秒异步检查一次活动成员 我已经阅
  • 在 python 中使用递归替代 len()

    作为 CS1301 问题的一部分 我正在尝试使用递归编写一个函数 该函数将执行与 len 完全相同的操作 但是 我有两个问题 我正在使用全局变量 但我在课程中还没有学到这一点 cs1301 自动评分器告诉我 我的函数返回 26 而不是 13
  • 用于桌面数据库应用程序的 Python 框架

    是否有一个框架可以为Python开发桌面数据库应用程序 一些带有CRUD屏幕的屏幕 我正在寻找类似于 Windows 窗体的东西 能够将 TextField Combos 和其他 UI 隐喻与datasets连接到关系数据库例如 MySQL
  • 将 pandas 数据框中的多列更改为日期时间

    我有一个 13 列和 55 000 行的数据框 我正在尝试将其中 5 行转换为日期时间 现在它们返回类型 对象 我需要转换这些数据以进行机器学习 我知道如果我这样做 data birth date pd to datetime data b

随机推荐

  • 为什么css高度100%不适用于普通div?

    这是我的简单代码 div div CSS高度100 不适用于DIV 我知道一些其他的 css 代码来获取这个 但为什么这段代码不起作用 如何在没有任何脚本的情况下处理高度 100 和宽度 100 For 要工作 您需要设置高度parent
  • 使用 travis-ci 和 wxpython 测试

    我正在尝试添加一些 wxPython 测试以与 travis ci 一起使用 但我不知道如何在构建环境中安装 wxPython 我使用brew在我的计算机上安装了wxPython 但是我无法让brew与travis ci一起使用 在 tra
  • 如何使用 PHP-Parser 获取全局变量名称并更改它

    我想用PHP解析器库来获取全局方法 POST GET REQUEST 获取 PHP 中的值 我在用着PHP解析器我想检查节点名称是否等于 POST GET REQUEST 我还是 PHP Parser 的初学者 不知道如何获取这些全局变量
  • 尽管值在 getPreviewFpsRange 的范围内,但 setPreviewFpsRange 不起作用

    这个简单的代码 Camera Parameters params currentCamera getParameters params setPreviewFpsRange 10000 15000 currentCamera setPara
  • JSPDF - 如何将具有不同页面尺寸(高度和宽度)的多个图像导出到单个 pdf 文件

    我有多个不同尺寸 高度和宽度 的图像 需要使用 jspdf 将其转换为 PDF 但使用时遇到问题addPage 函数来做到这一点 是否可以将不同页面大小的图像导出到单个 pdf 中 我实际上可以使用以下命令添加具有不同图像尺寸的多个页面ad
  • JPanel 上的 MouseEvent - 坐标错误

    我用Java编写了以下微型画笔程序 import java awt BorderLayout import java awt Color import java awt Container import java awt Graphics
  • Clojure 的 :require 和 Instaparse

    我正在尝试使用即时解析我的 Clojure 项目的 lib 我在项目依赖项中使用 leiningen 2 0 和 clojure 1 5 1 我将 instaparse 添加到我的项目依赖项中 如下所示 defproject bachelo
  • 实现 DHCP 客户端

    在使用 C 的 UNIX 上 我的客户端正在以超级用户模式侦听端口 68 发送 DHCP 发现消息后 当我尝试接收时 它会阻塞在 recvfrom 中 这意味着没有收到消息 或者系统是否有一个进程 DHCP 客户端 在同一端口 68 上监听
  • 如何在新项目中重用 Eclipse 启动文件

    我刚刚在 eclipse 中检查了一个 svn 项目作为 java 项目 其中有几个运行启动文件我想重用 但不知道如何指向 运行 来查看这些启动文件或使用它 有什么建议吗 谢谢 通常这些会被项目自动选取并放置在运行菜单中 如果不是 请右键单
  • Google 表单中的 FILE_UPLOAD 项目类型

    谷歌最近在其表单中添加了文件上传功能 但是 我无法找到任何有关如何在谷歌脚本中使用它的文档 如果我在 google 上查看 item types API 它没有列出 https developers google com apps scri
  • iOS 音频操作 - 向后播放本地 .caf 文件

    我想要加载本地 caf 音频文件并反转音频 向后播放 我发现我基本上需要从帖子中翻转一系列缓冲区数据this 但是 我不确定如何从给定的音频文件访问此缓冲区数据 我有一些使用 AVaudioPlayer 和 ObjectAL 一个 obj
  • 对空值使用空检查运算符

    我是新来的Flutter 当我运行我的简单扑动应用程序时 出现此错误 我不明白为什么会发生这个错误 Error Null check operator used on a null value 我在 main dart 中的代码 impor
  • 如何在ASP.NET Core 3.1 MVC中进行RequiredIf客户端和服务器端验证?

    我必须在 ASP NET Core 3 1 中进行客户端和服务器端验证 我浏览了很多博客 但对 ASP NET Core MVC 没有足够的了解 我必须进行必需的验证 什么时候BusinessType is Business the VAT
  • 在多维数组中搜索值并返回新数组

    过去几个小时一直在为此苦苦挣扎 尝试为数组构建一个搜索函数 然后输出一个包含所有具有关键字的数组的新函数 这是我正在使用的函数 不确定这是否朝着正确的方向前进 它返回数组中的数组 这不是我想要的 function search array
  • 在本地主机中运行 laravel 项目

    我已经通过composer create project laravel laravel prefer dist安装了laravel 之后运行 php artisanserve 命令到 laravel 项目目录并得到这个结果 Laravel
  • 如何计算读入此列表的文件数量?

    我有一堆 csv 文件 我正在将它们读入如下列表中 f lt list files pattern 201 d 5 csv 有什么方法可以计算我正在读入的文件数量吗 Yes length f 会给你文件名的数量f
  • Jetty 上的 JSF2 随机给出“zip 文件已关闭”,但在从 Maven jetty 插件运行时有效 (jetty:run)

    我的 JSF Web 应用程序在访问文件 如图像 css js 时随机出现错误 zip 文件已关闭 它部署在 Jetty 7 上 看起来其中一些文件未加载 页面上缺少一些图像 java lang IllegalStateException
  • 提高此场景性能的方法

    我有一张地图 其中填充了大量数据 约300 000条记录 并如下迭代 for Map Entry
  • 控制台显示有关内容安全策略的错误和大量失败的 GET 请求

    我实际上正在开发我的第一个 Chrome 扩展程序即使运行顺利我收到了很多错误get 我用来检索一些数据的函数和关于代码安全性的恼人错误 Here s a screenshot of the console log 下面是涉及到的代码 弹出
  • 数组的 cython / numpy 类型

    我正在尝试构造一个 python 类型 int 的矩阵 一个 64 位有符号整数 cdef matrix33 return np zeros 3 3 dtype int cdef do stuf np ndarray int ndim 2