python - 使用没有 for 循环的 Scipy 将向量与自身卷积 n 次
问题描述
我想在不使用 for 循环的情况下将向量与自身卷积 n 次(我是 numpy 新手)。现在我有这个:
def build_gaussian_filter(filter_size):
ones_array = np.array([1, 1])
result = np.array([1, 1])
for i in range(filter_size-2):
result = np.convolve(ones_array, result)
return result
有没有一种无循环的方法来做到这一点?谢谢
解决方案
您可以使用内置的窗口函数:
scipy.signal.windows.gaussian(5,1) * 6
>>> array([0.8120117 , 3.63918396, 6. , 3.63918396, 0.8120117 ])
给你的函数几乎相同的结果:
build_gaussian_filter(5)
>>> [1 4 6 4 1]
尽管这似乎是侥幸,但随着窗口大小的增加,您的结果与 scipy 返回的内核不同。您也可以查看 scipy 中的广义高斯窗口。
推荐阅读
- excel - 如何使用 Excel 中的列名基于值可视化分类数据?
- node.js - Discord bot 在同一个句子中对两个触发器做出两次响应
- mqtt - Mosquitto 坚持作为 MQTT 转发代理
- git - 失败的管道 #xxx 由用户在 2 小时前触发 需要用户验证
- python - 如何在 ElementTree 中获取元素的全名
- amazon-web-services - AWS API Gateway、Lambda 和 AWS 版本控制
- excel - 使用组织帐户凭据从 Excel 中的存储帐户导入 blob/表数据
- html - 为什么我的 CSS 不透明度过渡不起作用?
- dataframe - 我怎样才能让这个子集函数工作?
- javascript - CSS - 如何正确使用 flex-basis?