What does "ValueError: object too deep for desired array" mean and how to fix it?
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:
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.
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.
np.convolve()
takes one dimension array. You need to check the input and convert it into 1D.
You can use the np.ravel()
, to convert the array to one dimension.
You could try using scipy.ndimage.convolve
it allows convolution of multidimensional images. here is the docs