numpy - 使用 numpy 在二维数组中查找模式
问题描述
我有一个由 1 和零组成的数组,称为 a。例如:
a=
[[0,0,1,1,1,0],
[0,0,0,0,0,0],
[1,0,0,0,0,1],
[0,0,0,0,1,0],
[0,0,0,1,0,0],
[0,0,1,0,0,1]]
和一个内核(k):
k =
[[0,0,1]
[0,1,0]
[1,0,0]]
我想在 a 中找到所有 k 的实例。我希望卷积的结果是:
conv(a,k) =
[[0,0,0,0,0,0],
[0,0,0,0,0,0],
[0,0,0,0,0,0],
[0,0,0,0,1,0],
[0,0,0,1,0,0],
[0,0,0,0,0,0]]
有内置功能吗?
我知道它可以用 for 循环来完成,但这对于大型数组来说太慢了。谢谢
解决方案
可以使用 numpy.fft 应用卷积
from numpy.fft import fft2, ifft2
def np_fftconvolve(A, B):
return np.real(ifft2(fft2(A)*fft2(B, s=A.shape)))
推荐阅读
- mysql - 将插入 mysql 的记录限制为准确的 9 个数字
- fortran - 顺序并行 MPI 算法:如何使用 MPI 实现这种行为?
- javascript - 将变量分配给数组中的值
- php - centos - 无法删除 nginx 和 php-fpm
- javascript - 在反应中检测是否对div的左侧或右侧进行了点击
- python - 在python中导入包含“if __name__ == '__main__':”的python程序
- python - 我发生了五分钟后无法读取库存的错误
- vue-apollo - vue apollo 复合 oe 批量查询——可能吗?
- amazon-web-services - 获取 AWS S3 存储桶中的一级目录列表
- azure - 无法访问 Azure 网络 CNI 插件的 Azure AKS 负载均衡器问题