Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tích chập tuyến tính rời rạc của hai dãy 1D và lấy giá trị giữa trong Python

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].