Ik probeer dit te doen:
h = [0.2,0.2,0.2,0.2,0.2]
Y = np.convolve(Y, h, "same")
Y
ziet er als volgt uit:
Terwijl ik dit doe, krijg ik deze foutmelding:
ValueError: object too deep for desired array
Waarom is dit?
Mijn gok is dat de functie convolve
op de een of andere manier Y
niet ziet als een 1D-array.
Antwoord 1, autoriteit 100%
De Y
-array in uw schermafbeelding is geen 1D-array, het is een 2D-array met 300 rijen en 1 kolom, zoals aangegeven door de shape
die (300, 1)
.
Om de extra dimensie te verwijderen, kun je de array opdelen als Y[:, 0]
. Om een n-dimensionale array in het algemeen naar 1D te converteren, kunt u np.reshape(a, a.size)
gebruiken.
Een andere optie voor het converteren van een 2D-array naar 1D is de functie flatten()
van de module numpy.ndarray
, met dit verschil dat het een kopie van de array maakt.
Antwoord 2, autoriteit 14%
np.convolve()
neemt één dimensie-array. U moet de invoer controleren en omzetten in 1D.
U kunt de np.ravel()
gebruiken om de array naar één dimensie te converteren.
Antwoord 3, autoriteit 4%
Je zou kunnen proberen scipy.ndimage.convolve
te gebruiken om convolutie van multidimensionale afbeeldingen mogelijk te maken. hier zijn de documenten
Antwoord 4, autoriteit 3%
np.convolve
heeft een afgeplatte array nodig als een van zijn invoer, je kunt numpy.ndarray.flatten()
gebruiken, wat vrij snel is, vind het hier.