ValueError: object too deep for desired array while using convolution

Olivier_s_j picture Olivier_s_j · Apr 10, 2013 · Viewed 99.2k times · Source

I'm trying to do this:

h = [0.2,0.2,0.2,0.2,0.2]

Y = np.convolve(Y, h, "same")

Y looks like this:

screenshot

While doing this I get this error:

ValueError: object too deep for desired array

Why is this?

My guess is because somehow the convolve function does not see Y as a 1D array.

Answer

user4815162342 picture user4815162342 · Apr 10, 2013

The Y array in your screenshot is not a 1D array, it's a 2D array with 300 rows and 1 column, as indicated by its shape being (300, 1).

To remove the extra dimension, you can slice the array as Y[:, 0]. To generally convert an n-dimensional array to 1D, you can use np.reshape(a, a.size).

Another option for converting a 2D array into 1D is flatten() function from numpy.ndarray module, with the difference that it makes a copy of the array.