python二维向量运算模拟_python – 在numpy的二维数组上的矢量化移动窗口

如果你能表达这个功能

f(in[i][j],in[i+1][j],in[i-1][j],in[i][j+1],in[i][j-1],…)

作为一个线性运算符,你可以使用scipy的signal.convolve2d函数来做到这一点.例如,假设您有一个50×50阵列A,并且您想要计算第二个阵列B,其中每个元素b [ij]是[i,j]上的平均值,a [(i-1),j ],a [i,(j-1)],a [(i-1),(j-1)]来自数组A.你可以这样做:

A = # your first array

B = numpy.ones((2,2))/4

C = scipy.signal.convolve2d(A,B, 'valid')

当执行卷积时,阵列B在A上“滑动”,将相应的元素相乘并对结果求和.由于边界效应,在使用结果数组C时必须小心.这里,由于convolve2d中的’valid’参数,C的形状为49×49,因为它们包含边界效果,所以放弃第一行和第一行.如果你想拥有一个50×50阵列而不丢弃,你可以将该参数换成’same’

编辑:也许如果你能告诉我更多关于你需要的功能,我可以更具体地帮助你把它变成一个用来进行2D卷积的数组.

希望有所帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值