我是numpy的新手。
我从Difference between numpy.array shape (R, 1) and (R,)
中了解了rank-1数组和1-dim vector之间的区别我还被告知尽可能使用vector来进行机器学习任务而不是rank1数组。 (它来自https://www.coursera.org/learn/neural-networks-deep-learning/lecture/87MUx/a-note-on-python-numpy-vectors 4:35)
我正在尝试使用numpy.convolve而我看不到它需要1-dim向量。
有没有办法将1-dim向量传递给numpy.convolve
,还是应该使用(N,)形状数组?
答案 0 :(得分:0)
numpy.convolve
的文档将输入描述为"一维数组。"
没有单独的"向量"在NumPy中,只有一维数组。除了第一个维度之外的所有维数都是1的高维数组通常也是可用的。
我认为您只需要尝试并查看。它应该按照你期望的方式工作。
答案 1 :(得分:0)
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看起来毫无意义地浪费时间,但谁知道,遵守机器学习法的好处也许是值得的。