Numpy数组替换循环

2024-04-29 12:52:27 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个数组A[I,j],我想计算一个新的量B[I,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.形状为(n+1,j)。在


Tags: 方法in功能numpyfornp公司数组
2条回答

定义A_left = A[:-2, :]A_middle = A[1:-1, :]和{}

然后B = a*A_left + b*A_middle + c*A_right

如果您不介意一点信号处理,您可以使用^{}提供一个通用的解决方案(在这种意义上,您可以在ab和{}旁边分配更多元素,以便从A缩放元素)使用^{}。在

这与^{}相似,在这里,卷积理论与这种情况有关,是以更详细的方式处理的。执行应该是这样的-

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')

相关问题 更多 >