gpt4 book ai didi

python - multiarray.correlate2(a, v, mode) 实际上是如何实现的?

转载 作者:太空狗 更新时间:2023-10-29 21:43:02 32 4
gpt4 key购买 nike

在了解 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)

于是开始寻找multiarray.correlate2(a, v, mode)函数的实现,可惜没找到。我只是说,我正在寻找它,因为我试图自己实现自相关函数,并且我缺少类似于 mode='full' 参数的功能 Numpy.correlate() 使函数将结果作为一维数组返回。提前感谢您的帮助。

最佳答案

与 c 等其他语言相比,python 代码的速度可能非常差。 numpy 旨在提供对数组的高性能操作,因此开发人员决定在 c 中实现一些操作。

不幸的是,在 numpy 的代码库中找不到 correlate 的 python 实现,但是如果您熟悉 Cpython的扩展模块,你可以找到相关代码here .

不同的模式只是指定输出数组的长度。您可以通过转换输入来模拟它们:

import numpy as np
a = [1, 2, 3]
v = [0, 1, 0.5]
np.correlate(a, v, mode="full")

返回:

array([ 0.5,  2. ,  3.5,  3. ,  0. ])

用零填充 v 可以获得相同的结果:

np.correlate(a, [0, 0] + v + [0, 0])

返回相同的结果:

array([ 0.5,  2. ,  3.5,  3. ,  0. ])

关于python - multiarray.correlate2(a, v, mode) 实际上是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27462627/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com