繁体   English   中英

将numpy.convolve应用于一维矢量(具有单例维的二维数组)

[英]Apply numpy.convolve to 1-dim vectors (two-dimensional arrays with singleton dimension)

我是numpy的新手。

我从numpy.array形状(R,1)和(R,)之间的差异中学到了rank-1数组和1-dim向量之间的区别

还告诉我在可能的情况下将vector用于机器学习任务,而不是rank1数组。 (来自https://www.coursera.org/learn/neural-networks-deep-learning/lecture/87MUx/a-note-on-python-numpy-vectors在4:35)

我正在尝试使用numpy.convolve,但我看不到它需要1维矢量。

有没有一种方法可以将1-dim向量传递给numpy.convolve或应该使用(N,)形状数组?

numpy.convolve的文档将输入描述为“一维数组”。

NumPy中没有单独的“向量”,只有一个一维数组。 除第一维以外的所有维均为1的高维数组通常也可以使用。

我认为您正处于尝试和观察的阶段。 它应该按照您期望的方式工作。

numpy.convolve的输入数组必须是一维的,形状为(N,)

要对具有多个维度的数组进行卷积,请使用scipy.signal.convolve

from scipy import signal
a = np.random.normal(size=(10, 1))
b = np.random.normal(size=(5, 1))
signal.convolve(a, b)

我会严重质疑该建议的智慧(它是否来自使用Matlab而不是使用NumPy的人?),但是如果您必须在NumPy中遵循该建议,则先对数组进行squeeze()运算,然后在卷积之前去除单例维数,然后reshape为恢复该尺寸

a = np.random.normal(size=(10, 1))
b = np.random.normal(size=(5, 1))     
c = np.convolve(a.squeeze(), b.squeeze()).reshape(-1, 1)

对于NumPy而言,这似乎是浪费时间,但谁知道,遵守机器学习法的好处也许是值得的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM