首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于替换for循环的Numpy数组

用于替换for循环的Numpy数组
EN

Stack Overflow用户
提问于 2015-10-14 21:52:49
回答 2查看 987关注 0票数 1

假设我有一个数组Ai,j,我想通过这样做来计算一个新的量Bi,j:

代码语言:javascript
复制
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)。

EN

回答 2

Stack Overflow用户

发布于 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

票数 2
EN

Stack Overflow用户

发布于 2015-10-14 22:07:09

如果你不介意一点信号处理,你可以有一个通用的解决方案(在通用的意义上,你可以分配更多的元素,除了abc,用于从A缩放元素)使用signal.convolve2d

这将类似于本other solution,其中将以更详细的方式处理与此类情况相关的卷积理论。其实现将如下所示-

代码语言:javascript
复制
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')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33127245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档