Để lấy tích Kronecker của mảng 4 chiều và 3 chiều, dùng numpy.kron() trong NumPy Python. Tính tích Kronecker, một mảng tổ hợp gồm các khối của mảng thứ hai tỷ lệ bởi mảng thứ nhất.
Hàm giả định số chiều của a và b giống nhau, nếu cần thêm 1 vào mảng nhỏ hơn. Nếu a.shape = (r0,r1,..,rN) và b.shape = (s0,s1,...,sN), tích Kronecker có hình dạng (r0*s0, r1*s1, ..., rN*sN). Các phần tử là tích của phần tử từ a và b.
Các bước thực hiện
Nhập NumPy:
import numpy as np
Tạo hai mảng chiều khác nhau:
arr1 = np.arange(40).reshape((2, 5, 2, 2))
arr2 = np.arange(18).reshape((2, 3, 3))
Hiển thị mảng:
print("Mảng 1...\n", arr1)
print("\nMảng 2...\n", arr2)
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)
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)
Tính tích Kronecker:
print("\nKết quả (Tích Kronecker)...\n", np.kron(arr1, arr2))
Ví dụ hoàn chỉnh
import numpy as np
arr1 = np.arange(40).reshape((2, 5, 2, 2))
arr2 = np.arange(18).reshape((2, 3, 3))
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ả (Tích Kronecker)...\n", np.kron(arr1, arr2))
Kết quả đầu ra
Mảng 1...
[[[[ 0 1] [ 2 3]] [[ 4 5] [ 6 7]] [[ 8 9] [10 11]] [[12 13] [14 15]] [[16 17] [18 19]]]
[[[20 21] [22 23]] [[24 25] [26 27]] [[28 29] [30 31]] [[32 33] [34 35]] [[36 37] [38 39]]]]
Mảng 2...
[[[ 0 1 2] [ 3 4 5] [ 6 7 8]]
[[ 9 10 11] [12 13 14] [15 16 17]]]
Số chiều Mảng 1...
4
Số chiều Mảng 2...
3
Hình dạng Mảng 1...
(2, 5, 2, 2)
Hình dạng Mảng 2...
(2, 3, 3)
Kết quả (Tích Kronecker)...
[[[[ 0 0 0 0 1 2] [ 0 0 0 3 4 5] ... ]]]