怎样multiarray.correlate2(a,v,mode)是否实际实现?

2024-10-01 17:28:16 发布

您现在位置:Python中文网/ 问答频道 /正文

在我了解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)函数的实现,但不幸的是我找不到它。我要说的是,我正在寻找它,因为我试图自己实现自相关函数,而我缺少了类似于Numpy.correlate()中的mode='full'参数的功能,它使函数以1D数组的形式返回结果。提前谢谢你的帮助。在


Tags: 函数fromnumpyfalsereturnmode过程def
1条回答
网友
1楼 · 发布于 2024-10-01 17:28:16

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

不幸的是,在numpy的代码库中找不到correlate的python实现,但是如果您熟悉C和{}的扩展模块,就可以找到相关的代码here。在

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

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

退货:

^{pr2}$

用0填充v可以得到相同的结果:

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

返回相同的结果:

^{pr2}$

相关问题 更多 >

    热门问题