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")

Y ziet er als volgt uit:

screenshot

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.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

two × 5 =

Other episodes