簡體   English   中英

將numpy數組傳遞給Cython

[英]Passing numpy array to Cython

我正在學習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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM