Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ValueError: object too deep for desired array while using convolution

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.

like image 226
Olivier_s_j Avatar asked Apr 10 '13 10:04

Olivier_s_j


3 Answers

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.

like image 132
user4815162342 Avatar answered Nov 09 '22 16:11

user4815162342


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.

like image 23
Sandip Kumar Avatar answered Nov 09 '22 15:11

Sandip Kumar


You could try using scipy.ndimage.convolve it allows convolution of multidimensional images. here is the docs

like image 4
jelde015 Avatar answered Nov 09 '22 16:11

jelde015