diff --git a/src/numpy_pandas/signal_processing.py b/src/numpy_pandas/signal_processing.py index 0fe8e2c..1992d6d 100644 --- a/src/numpy_pandas/signal_processing.py +++ b/src/numpy_pandas/signal_processing.py @@ -5,10 +5,10 @@ def manual_convolution_1d(signal: np.ndarray, kernel: np.ndarray) -> np.ndarray: signal_len = len(signal) kernel_len = len(kernel) result_len = signal_len - kernel_len + 1 - result = np.zeros(result_len) + result = np.empty(result_len) + # Vectorized implementation for better speed and memory efficiency for i in range(result_len): - for j in range(kernel_len): - result[i] += signal[i + j] * kernel[j] + result[i] = np.dot(signal[i : i + kernel_len], kernel) return result