我在 cython 中创建了一个类型化的内存视图,并想将它乘以一个标量:
import numpy as np
import math
cimport numpy as np
def foo():
N = 10
cdef np.double_t [:, :] A = np.ones(shape=(N,N),dtype=np.double_)
cdef int i,j
cdef double pi = math.pi
for i in range(N):
for j in range(N):
A[i,j] *= pi
return A
def bar():
N = 10
cdef np.double_t [:, :] A = np.ones(shape=(N,N),dtype=np.double_)
cdef double pi = math.pi
A *= pi
return A
函数foo()
执行此任务但不是很方便/可读。
A *= pi
但是,函数中的行bar()
无法编译:Invalid operand types for '*' (double_t[:, :]; double)
.
有没有办法在 cython memoryview 上执行这样的广播操作?