NumPy का numpy.inner() फंक्शन दो मल्टी-डायमेंशनल ऐरे का इनर प्रोडक्ट निकालता है। 1D के लिए डॉट प्रोडक्ट, उच्च आयामों के लिए अंतिम अक्ष पर सम-गुणनफल।
सिंटैक्स
numpy.inner(a, b)
- a, b: इनपुट ऐरे। नॉन-स्केलर होने पर अंतिम आयाम समान होना चाहिए।
- वापसी: आकार
a.shape[:-1] + b.shape[:-1]का ऐरे।
2D ऐरे उदाहरण
import numpy as np
# दो 2x2 मैट्रिक्स
arr1 = np.array([[5, 10], [15, 20]])
arr2 = np.array([[6, 12], [18, 24]])
print("मैट्रिक्स 1:\n", arr1)
print("\nमैट्रिक्स 2:\n", arr2)
print("मैट्रिक्स 1 डायमेंशन्स:", arr1.ndim)
print("मैट्रिक्स 2 डायमेंशन्स:", arr2.ndim)
print("मैट्रिक्स 1 आकार:", arr1.shape)
print("मैट्रिक्स 2 आकार:", arr2.shape)
# इनर प्रोडक्ट
inner_result = np.inner(arr1, arr2)
print("\nइनर प्रोडक्ट:\n", inner_result)
आउटपुट
मैट्रिक्स 1:
[[ 5 10]
[15 20]]
मैट्रिक्स 2:
[[ 6 12]
[18 24]]
मैट्रिक्स 1 डायमेंशन्स: 2
मैट्रिक्स 2 डायमेंशन्स: 2
मैट्रिक्स 1 आकार: (2, 2)
मैट्रिक्स 2 आकार: (2, 2)
इनर प्रोडक्ट:
[[150 330]
[330 750]]
गणना विवरण
inner(A, B) में, A की प्रत्येक रो और B की प्रत्येक रो का डॉट प्रोडक्ट:
| B रो 0: [6, 12] | B रो 1: [18, 24] | |
|---|---|---|
| A रो 0: [5, 10] | 5×6 + 10×12 = 150 | 5×18 + 10×24 = 330 |
| A रो 1: [15, 20] | 15×6 + 20×12 = 330 | 15×18 + 20×24 = 750 |
आकार नियम
# A: (M, N), B: (K, N) → परिणाम: (M, K)
# A: (2, 3, 4), B: (5, 4) → परिणाम: (2, 3, 5)
# A: (2, 3, 4), B: (3, 4, 5) → परिणाम: (2, 3, 3, 5)
inner() बनाम matmul() (@) बनाम tensordot()
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print("inner(A, B):\n", np.inner(A, B)) # रो-रो डॉट प्रोडक्ट
print("A @ B:\n", A @ B) # मैट्रिक्स गुणन (रो-कॉलम)
print("tensordot(A, B, axes=1):\n", np.tensordot(A, B, axes=1)) # समान inner
3D ऐरे के साथ
A = np.random.rand(2, 3, 4) # (2, 3, 4)
B = np.random.rand(5, 4) # (5, 4)
result = np.inner(A, B) # (2, 3, 5)
print("आकार:", result.shape)
उपयोग के मामले
- बैच कॉसाइन सिमिलैरिटी गणना।
- टेंसर नेटवर्क कॉन्ट्रैक्शन।
- मल्टी-हेड अटेंशन में क्वेरी-की डॉट प्रोडक्ट्स।
- कर्नेल मैथड्स में ग्राम मैट्रिक्स (यदि डेटा रो-वाइज़)।
नोट
inner अंतिम अक्ष पर सम करता है। मैट्रिक्स गुणन (रो × कॉलम) के लिए @ या matmul उपयोग करें। inner(A, B) == matmul(A, B.T) जब दोनों 2D हों।