假设我有一个数组Ai,j,我想通过这样做来计算一个新的量Bi,j:
for i in arange(1, n):
B[i,j+1] = a*A[i-1,j] + b*A[i,j]+ c*A[i+1,j]我可以使用什么numpy功能将其转换为纯数组操作?
我在想np.cumprod,但不清楚如何将系数合并到计算中。
A.shape将是(n+1,j)。
发布于 2015-10-14 21:58:39
定义A_left = A[:-2, :]、A_middle = A[1:-1, :]和A_right = A[2:, :]
然后是B = a*A_left + b*A_middle + c*A_right
发布于 2015-10-14 22:07:09
如果你不介意一点信号处理,你可以有一个通用的解决方案(在通用的意义上,你可以分配更多的元素,除了a,b和c,用于从A缩放元素)使用signal.convolve2d。
这将类似于本other solution,其中将以更详细的方式处理与此类情况相关的卷积理论。其实现将如下所示-
from scipy import signal
B = np.zeros_like(A)
kernel = np.array([a,b,c])[::-1,None]
B[1:-1] = signal.convolve2d(A, kernel, boundary='symm', mode='valid')https://stackoverflow.com/questions/33127245
复制相似问题