Подтвердить что ты не робот

ValueError: объект слишком глубокий для желаемого массива при использовании свертки

Привет, я пытаюсь сделать это:

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

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

Y выглядит так:

screenshot

При этом я получаю эту ошибку:

ValueError: объект слишком глубокий для желаемого массива

Почему это?

Моя догадка заключается в том, что как-то функция convolve не видит Y как 1D-массив.

4b9b3361

Ответ 1

Массив Y на вашем скриншоте - это не одномерный массив, это двумерный массив с 300 строками и 1 столбцом, на что указывает его shape (300, 1).

Чтобы преобразовать его в одномерный массив, нарежьте его как Y[:, 0] или np.reshape(a, len(a)) его с помощью np.reshape(a, len(a)).

Альтернативой для преобразования 2D-массива в 1D является функция numpy.ndarray flatten() из модуля numpy.ndarray, с той лишь разницей, что он создает копию массива.

Ответ 2

np.convolve() принимает один размерный массив. Вам нужно проверить вход и преобразовать его в 1D.

Вы можете использовать np.ravel(), чтобы преобразовать массив в одно измерение.

Ответ 3

np.convolve требуется плоский массив в качестве одного из входных данных, вы можете использовать numpy.ndarray.flatten() который довольно быстро, найдите его здесь.

Ответ 4

Вы можете попробовать использовать scipy.ndimage.convolve это позволяет свертывать многомерные изображения. вот документы