我打算在python数组中使用memoryview:
...
cdef double[:, :] a = np.array([[1, 1, 0]])
cdef double[:, :] c = 0,5 * a * a.T
但它引发了一个错误:
'*'(double; double [:,:])
的操作数类型无效
在这种情况下我该怎么办?
答案 0 :(得分: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