我打算在python数组中使用memoryview:
...
cdef double[:, :] a = np.array([[1, 1, 0]])
cdef double[:, :] c = 0,5 * a * a.T
但它引发了一个错误:
"*"(double;double[:,:])的操作数类型无效
在这种情况下我能做什么?
获取标量和数组乘积的能力是numpy数组的一个特性(请参阅广播),但显然不是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