Sử dụng numpy.convolve() với mode='same' để trả về phần trung tâm của tích chập, có độ dài bằng max(M, N). Hiệu ứng biên vẫn còn hiện diện.
Các bước thực hiện (mode='same')
1. Nhập thư viện
import numpy as np
2. Tạo hai mảng 1D
arr1 = np.array([1, 2, 3])
arr2 = np.array([0, 1, 0.5])
3. Hiển thị mảng
print("Mảng 1...\n", arr1)
print("\nMảng 2...\n", arr2)
4. Kiểm tra số chiều
print("\nSố chiều Mảng 1...\n", arr1.ndim)
print("\nSố chiều Mảng 2...\n", arr2.ndim)
5. Kiểm tra hình dạng
print("\nHình dạng Mảng 1...\n", arr1.shape)
print("\nHình dạng Mảng 2...\n", arr2.shape)
6. Tích chập với mode='same'
print("\nKết quả (mode='same')...\n", np.convolve(arr1, arr2, mode='same'))
Ví dụ hoàn chỉnh
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([0, 1, 0.5])
print("Mảng 1...\n", arr1)
print("\nMảng 2...\n", arr2)
print("\nSố chiều Mảng 1...\n", arr1.ndim)
print("\nSố chiều Mảng 2...\n", arr2.ndim)
print("\nHình dạng Mảng 1...\n", arr1.shape)
print("\nHình dạng Mảng 2...\n", arr2.shape)
print("\nKết quả (mode='same')...\n", np.convolve(arr1, arr2, mode='same'))
Kết quả đầu ra
Mảng 1...
[1 2 3]
Mảng 2...
[0. 1. 0.5]
Số chiều Mảng 1...
1
Số chiều Mảng 2...
1
Hình dạng Mảng 1...
(3,)
Hình dạng Mảng 2...
(3,)
Kết quả (mode='same')...
[1. 2.5 4. ]
Giải thích mode='same': Trả về mảng độ dài 3 (max(3,3)=3), lấy phần trung tâm của tích chập đầy đủ [0, 1, 2.5, 4, 1.5] → lấy 3 giá trị giữa: [1, 2.5, 4].