Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

Python में दो मल्टी-डायमेंशनल ऐरे का इनर प्रोडक्ट निकालें

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 = 1505×18 + 10×24 = 330
A रो 1: [15, 20]15×6 + 20×12 = 33015×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 हों।

  1. - पायथन में 4D और 3D आयाम वाली सरणियों का क्रोनेकर प्रोडक्ट प्राप्त करना

    4D और 3D आयाम वाली सरणी का क्रोनेकर प्रोडक्ट प्राप्त करने के लिए, पायथन NumPy में numpy.kron() विधि का उपयोग करें। क्रोनेकर प्रोडक्ट की गणना करें, जो दूसरी सरणी के ब्लॉकों से बनी एक समग्र सरणी है जिसे पहली सरणी द्वारा स्केल किया गया है। यह फ़ंक्शन मानता है कि a और b के आयामों की संख्या समान है, यदि

  1. - पायथन में दो सरणियों के एलिमेंट्स के उत्पाद का k-वां सबसे बड़ा मान ढूंढने का प्रोग्राम

    मान लीजिए हमें दो लिस्ट p और q दी गई हैं जिनमें कुछ इंटीजर नंबर हैं। हमें इन लिस्ट के सभी मानों को गुणा करना है और गुणन परिणामों से k-वां सबसे बड़ा मान ढूंढना है। इसलिए, यदि इनपुट p = [2, 5], q = [6, 8], k = 2 है, तो आउटपुट 16 होगा। गुणन परिणाम हैं: 2 * 6 = 12, 2 * 8 = 16, 5 * 6 = 30, 5 * 8 = 40। द

  1. - पायथन में दो सरणियों का प्रतिच्छेदन II

    मान लीजिए हमारे पास दो सरणी A और B हैं, इन सरणियों में कुछ तत्व हैं। हमें उनका प्रतिच्छेदन ढूंढना है। उदाहरण के लिए, यदि A = [1, 4, 5, 3, 6], और B = [2, 3, 5, 7, 9], तो प्रतिच्छेदन [3, 5] होगा। हल करने के चरण दो सरणी A और B लें यदि A की लंबाई B की लंबाई से छोटी है, तो उन्हें स्वैप करें सरणी में तत