ภาพรวม
ใช้ numpy.tensordot() เพื่อคำนวณผลคูณเทนเซอร์ของอาร์เรย์ที่มีมิติต่างกัน โดยระบุ axes เป็น array-like object ที่มีสองอาร์เรย์ (a_axes, b_axes)
พารามิเตอร์ axes
- เป็น array-like ที่มีสองอาร์เรย์: (a_axes, b_axes)
- รวมผลคูณขององค์ประกอบตามแกนที่ระบุ
- หากเป็นสเกลาร์ N: รวม N มิติสุดท้ายของ a และ N มิติแรกของ b
ขั้นตอนการทำงาน
- นำเข้าไลบรารี
import numpy as np - สร้างอาร์เรย์มิติต่างกัน
arr1 = np.array(range(1, 9)) arr1.shape = (2, 2, 2) arr2 = np.array(('p', 'q', 'r', 's'), dtype=object) arr2.shape = (2, 2) - ตรวจสอบคุณสมบัติ
print("อาร์เรย์ 1...\n", arr1) print("\nอาร์เรย์ 2...\n", arr2) print("\nมิติอาร์เรย์ 1...\n", arr1.ndim) print("\nมิติอาร์เรย์ 2...\n", arr2.ndim) print("\nรูปร่างอาร์เรย์ 1...\n", arr1.shape) print("\nรูปร่างอาร์เรย์ 2...\n", arr2.shape) - คำนวณ tensor dot product
print("\nTensor dot product...\n", np.tensordot(arr1, arr2, ((0, 1), (0, 1))))
ตัวอย่างโค้ดสมบูรณ์
import numpy as np
arr1 = np.array(range(1, 9))
arr1.shape = (2, 2, 2)
arr2 = np.array(('p', 'q', 'r', 's'), dtype=object)
arr2.shape = (2, 2)
print("อาร์เรย์ 1...\n", arr1)
print("\nอาร์เรย์ 2...\n", arr2)
print("\nมิติของอาร์เรย์ 1...\n", arr1.ndim)
print("\nมิติของอาร์เรย์ 2...\n", arr2.ndim)
print("\nรูปร่างของอาร์เรย์ 1...\n", arr1.shape)
print("\nรูปร่างของอาร์เรย์ 2...\n", arr2.shape)
print("\nTensor dot product...\n", np.tensordot(arr1, arr2, ((0, 1), (0, 1))))
ผลลัพธ์ที่คาดหวัง
อาร์เรย์ 1...
[[[1 2] [3 4]] [[5 6] [7 8]]]
อาร์เรย์ 2...
[['p' 'q'] ['r' 's']]
มิติของอาร์เรย์ 1...
3
มิติของอาร์เรย์ 2...
2
รูปร่างของอาร์เรย์ 1...
(2, 2, 2)
รูปร่างของอาร์เรย์ 2...
(2, 2)
Tensor dot product...
['pqqqrrrrrsssssss' 'ppqqqqrrrrrrssssssss']