内存视图上的微积分(python数组)



我打算在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

相关内容

  • 没有找到相关文章

最新更新