簡體   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