gpt4 book ai didi

python - 将 numpy 数组传递给 Cython

转载 作者:太空狗 更新时间:2023-10-29 22:26:38 25 4
gpt4 key购买 nike

我正在学习 Cython。我在将 numpy 数组传递给 Cython 时遇到问题,并不真正了解发生了什么。你能帮帮我吗?

我有两个简单的数组:

a = np.array([1,2])
b = np.array([[1,4],[3,4]])

我想计算它们的点积。在 python/numpy 中一切正常:

>>> np.dot(a,b)
array([ 7, 12])

我将代码翻译成 Cython(如下所示:http://docs.cython.org/src/tutorial/numpy.html):

import numpy as np
cimport numpy as np

DTYPE = np.int
ctypedef np.int_t DTYPE_t

def dot(np.ndarray a, np.ndarray b):
cdef int d = np.dot(a, b)
return d

编译没有问题但返回错误:

>>> dot(a,b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "test.pyx", line 8, in test.dot (test.c:1262)
cdef int d = np.dot(a, b)
TypeError: only length-1 arrays can be converted to Python scalars

你能告诉我为什么以及如何正确地做到这一点吗?不幸的是谷歌没有帮助...

谢谢!

最佳答案

你的结果是 np.ndarray,不是 int。它无法尝试将第一个转换为后者。改为做

def dot(np.ndarray a, np.ndarray b):
cdef np.ndarray d = np.dot(a, b)
return d

关于python - 将 numpy 数组传递给 Cython,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20104270/

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