编程语言
首页 > 编程语言> > MemoryView上的微积分(Python数组)

MemoryView上的微积分(Python数组)

作者:互联网

我打算在python数组中使用memoryview:

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

但这引发了一个错误:

Invalid operand types for ‘*’ (double; double[:, :])

在这种情况下我该怎么办?

解决方法:

能够获取标量和数组乘积的功能是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

标签:cython,memoryview,arrays,python
来源: https://codeday.me/bug/20191030/1965786.html