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