gpt4 book ai didi

python - 在 IPython Notebook 中使用 %%cython 扩展发现错误

转载 作者:行者123 更新时间:2023-12-01 05:12:16 25 4
gpt4 key购买 nike

有谁知道我可以使用什么方法来查找 cython 代码中的错误?我正在使用 IPython Notebook 的 cython 扩展,当您需要处理的只是这样的事情时,它开始变得烦人,必须一直扫描我的代码以查找错误:

ValueError                                Traceback (most recent call last)
<ipython-input-430-92c892360488> in <module>()
----> 1 knn_alg(temp, start, L, w, B)

C:\Users\Patrick\.ipython\cython\_cython_magic_3cbae3230d887da1f1bc3c64de69c379.pyd in _cython_magic_3cbae3230d887da1f1bc3c64de69c379.knn_alg (C:\Users\Patrick\.ipython\cython\_cython_magic_3cbae3230d887da1f1bc3c64de69c379.c:3333)()

C:\Users\Patrick\.ipython\cython\_cython_magic_3cbae3230d887da1f1bc3c64de69c379.pyd in _cython_magic_3cbae3230d887da1f1bc3c64de69c379.knn_alg (C:\Users\Patrick\.ipython\cython\_cython_magic_3cbae3230d887da1f1bc3c64de69c379.c:2534)()

ValueError: Buffer has wrong number of dimensions (expected 2, got 1)

我知道它的含义以及要查找的内容,但如果它输出一些内容来显示错误所在,那就太好了。任何帮助将不胜感激

最佳答案

如果没有看到更多代码,很难确定你的错误是什么。话虽这么说,错误似乎出现在您在 Cython 代码之后评估的单元格的第 1 行中。

错误的意思是您正在将一维数组传递给需要二维数组的函数。看起来这发生在函数 knn_alg 内的函数调用之一中。这是一个最小的工作示例,显示了您做错了什么:

def break_things(double[:,:] a):
pass
def break_inner_things(double[:] a):
# Here you're passing a 1-D array to a function that expects a 2D array.
break_things(a)

如果您需要更详细的调试消息,Cython 有 debugger 。对于像这样简单的事情,我只需找到一个仍然显示错误的小示例,然后插入打印语句来验证所涉及事物的维数。对于上面的例子,这将是

def break_things(double[:,:] a):
pass
def break_inner_things(double[:] a):
print a.ndim
break_things(a)

关于python - 在 IPython Notebook 中使用 %%cython 扩展发现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23924582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com