2013-11-22 50 views
3

我有意向使用python的數組memoryview:積分上memoryview(蟒蛇陣列)

... 
cdef double[:, :] a = np.array([[1, 1, 0]]) 
cdef double[:, :] c = 0,5 * a * a.T 

但它提出了一個錯誤:

Invalid operand types for '*' (double; double[:, :])

我可以在這種情況下怎麼辦?

回答

4

能夠採用標量和數組的產品是numpy數組的一個特性(請參見broadcasting),但顯然不是Cython的內存視圖。這可以通過遍歷大塊內存並將每個條目與所需值相乘來實現。另外,只要堅持numpy數組。

示例代碼:

cdef double[:, :] c = np.empty((1, 3)) 
cdef int i 
for i in range(3): 
    c[0, i] = a[0, i] * a[0, i] * 0.5 
+0

謝謝您的回答! – user2863620