ValueError: объект слишком глубокий для желаемого массива при использовании свертки
Привет, я пытаюсь сделать это:
h =[0.2,0.2,0.2,0.2,0.2];
Y = np.convolve(Y, h, "same")
Y выглядит так:
![screenshot]()
При этом я получаю эту ошибку:
ValueError: объект слишком глубокий для желаемого массива
Почему это?
Моя догадка заключается в том, что как-то функция convolve не видит Y как 1D-массив.
Ответы
Ответ 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
это позволяет свертывать многомерные изображения. вот документы