我有一个numpy整型一维数组,看起来像这样:
[0,0,0,0,0,1,0,0,0,0,2,0,0,0,0,5,0,0,0,1,0,0,0,0,0,0,0,0,0,0]
基本上,它是一个大部分为零的数组,其中一些信号为int [1,2,3,4,5,...]
,信号的“宽度”始终为1,这意味着它们被0包围。
我想给每个信号加上“width”,这样就不是只在数组中使用1个空格,而是在数组中使用宽度空格,在这个例子中,宽度为3,我会得到
[0,0,0,0,1,1,1,0,0,2,2,2,0,0,5,5,5,0,1,1,1,0,0,0,0,0,0,0,0,0]
数组的长度保持不变,宽度可以是3、5、7,但不能太离谱。
最快的方法是什么?我觉得可能有一个简单的方法可以做到这一点,但不确定如何正确调用这个操作。
2条答案
按热度按时间moiiocjp1#
卷积可能就是你要找的?
但是这并不保留数组的长度,如果你想保留长度,你应该使用
'same'
模式:如果这还不够快,我建议您看看
scipy.signal.fftconvolve
。jq6vz3qz2#
我知道这不是完美的解决方案,但它是:我复制了初始列表并创建了一个宽度范围,这样当我发现一个不同于0的数字时,我会用适当的数字替换周围的零
输出:
PS:这个例子只适用于3和5,如果你想用7测试它,你需要在你的信号之间加零。