通过memoryview(Python数组)计算微积分

4

我想在Python数组中使用memoryview:

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

但是它报错了:

'*' 的操作数类型无效(double;double[:, :])

在这种情况下我应该怎么做?

1个回答

5
能够对标量和数组进行乘法运算是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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接