blu*_*xel 7 python numpy scipy
在我理解Numpy.correlate()函数实际如何工作的路上,我在纯Python中实现它,但我看到的是非常令人失望的:
def correlate(a, v, mode='valid', old_behavior=False):
mode = _mode_from_name(mode)
if old_behavior:
warnings.warn("""Warning.""", DeprecationWarning)
return multiarray.correlate(a, v, mode)
else:
return multiarray.correlate2(a, v, mode)
Run Code Online (Sandbox Code Playgroud)
所以我开始寻找multiarray.correlate2(a, v, mode)函数的实现,但不幸的是我找不到它.我只是说,我正在寻找它,因为我试图自己实现自相关函数,并且我缺少类似于mode='full'参数的功能Numpy.correlate(),使得函数将结果作为一维数组返回.提前感谢您的帮助.
与其他语言(如c)相比,python代码的速度可能非常低.numpy旨在为数组提供高性能的操作,因此开发人员决定在其中实现一些操作c.
不幸的是,不会发现的Python实现correlate中numpy的代码基础,但如果你熟悉C和python的扩展模块,你可以找到相关的代码在这里.
不同的模式只指定输出数组的长度.您可以通过转换输入来模拟它们:
import numpy as np
a = [1, 2, 3]
v = [0, 1, 0.5]
np.correlate(a, v, mode="full")
Run Code Online (Sandbox Code Playgroud)
收益:
array([ 0.5, 2. , 3.5, 3. , 0. ])
Run Code Online (Sandbox Code Playgroud)
填写v零可以得到相同的结果:
np.correlate(a, [0, 0] + v + [0, 0])
Run Code Online (Sandbox Code Playgroud)
返回相同的结果:
array([ 0.5, 2. , 3.5, 3. , 0. ])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3179 次 |
| 最近记录: |