ValueError: object te diep voor gewenste array tijdens gebruik van convolutie

Ik probeer dit te doen:

h = [0.2,0.2,0.2,0.2,0.2]
Y = np.convolve(Y, h, "same")

Yziet 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 convolveop de een of andere manier Yniet 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 shapedie (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.convolvete gebruiken om convolutie van multidimensionale afbeeldingen mogelijk te maken. hierzijn de documenten


Antwoord 4, autoriteit 3%

np.convolveheeft een afgeplatte array nodig als een van zijn invoer, je kunt numpy.ndarray.flatten()gebruiken, wat vrij snel is, vind het hier.

Other episodes