作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在了解 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 实现,但是如果您熟悉 C
和python
的扩展模块,你可以找到相关代码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/
我是一名优秀的程序员,十分优秀!