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

Python में 3D ऐरे का इनवर्स (प्रतिलोम) निकालें

NumPy का numpy.linalg.tensorinv() फंक्शन N-डायमेंशनल ऐरे (टेंसर्स) का टेंसर इनवर्स निकालता है। यह सामान्य मैट्रिक्स इनवर्स का उच्च-आयामी सामान्यीकरण है।

सिंटैक्स और पैरामीटर्स

numpy.linalg.tensorinv(a, ind=2)
  • a: इनपुट टेंसर (ऐरे)। इसका आकार 'वर्गाकार' होना चाहिए: prod(a.shape[:ind]) == prod(a.shape[ind:])।
  • ind: इनवर्स सम में शामिल पहले इंडेक्स की संख्या। डिफ़ॉल्ट 2।
  • वापसी: टेंसर का टेंसरडॉट इनवर्स, आकार a.shape[ind:] + a.shape[:ind]।

कॉन्सेप्ट: टेंसर इनवर्स

सामान्य मैट्रिक्स के लिए A⁻¹ ऐसा होता है कि A @ A⁻¹ = I।
टेंसर के लिए, tensorinv(a) ऐसा होता है कि tensordot(tensorinv(a), a, ind) = identity tensor।

3D ऐरे उदाहरण

import numpy as np
from numpy.linalg import inv

# 24x24 आइडेंटिटी मैट्रिक्स बनाएं और इसे (24, 8, 3) आकार दें
arr = np.eye(4*6)  # 24x24 आइडेंटिटी
arr.shape = (24, 8, 3)  # 3D आकार दें

print("मूल ऐरे आकार:", arr.shape)
print("डायमेंशन्स:", arr.ndim)
print("डेटा टाइप:", arr.dtype)

# ind=1 के साथ टेंसर इनवर्स (पहला इंडेक्स सम में शामिल)
result = np.linalg.tensorinv(arr, ind=1)
print("\nटेंसर इनवर्स आकार:", result.shape)
print("परिणाम (पहले कुछ एलिमेंट्स):\n", result[0, :, :])

आउटपुट

मूल ऐरे आकार: (24, 8, 3)
डायमेंशन्स: 3
डेटा टाइप: float64
टेंसर इनवर्स आकार: (8, 3, 24)
परिणाम (पहले कुछ एलिमेंट्स):
 [[1. 0. 0. ... 0. 0. 0.]
  [0. 1. 0. ... 0. 0. 0.]
  [0. 0. 1. ... 0. 0. 0.]]

आकार परिवर्तन की व्याख्या

  • मूल आकार: (24, 8, 3)
  • ind=1: पहला आयाम (24) "पंक्ति" भाग, शेष (8, 3) "कॉलम" भाग
  • वर्गाकार शर्त: 24 == 8*3 = 24 ✓
  • परिणाम आकार: a.shape[1:] + a.shape[:1] = (8, 3) + (24,) = (8, 3, 24)

सत्यापन

# टेंसरडॉट से सत्यापित करें
identity_check = np.tensordot(result, arr, axes=1)
print("टेंसरडॉट परिणाम आकार:", identity_check.shape)
print("क्या यह आइडेंटिटी के करीब है?", np.allclose(identity_check, np.eye(24).reshape(8, 3, 8, 3)))

सामान्य मैट्रिक्स इनवर्स से तुलना

# 2D मैट्रिक्स के लिए tensorinv, ind=2 के साथ सामान्य इनवर्स के समान है
mat = np.array([[2, 1], [1, 2]])
print("सामान्य इनवर्स:\n", np.linalg.inv(mat))
print("टेंसर इनवर्स (ind=2):\n", np.linalg.tensorinv(mat, ind=2))

उपयोग के मामले

  • मल्टी-डायमेंशनल सिग्नल प्रोसेसिंग।
  • क्वांटम मैकेनिक्स में टेंसर नेटवर्क्स।
  • मल्टीवेरिएट स्टैटिस्टिक्स।
  • डीप लर्निंग में हायर-ऑर्डर ऑप्टिमाइजेशन।

महत्वपूर्ण शर्त

इनपुट टेंसर "वर्गाकार" होना चाहिए: पहले ind आयामों का गुणनफल शेष आयामों के गुणनफल के बराबर होना चाहिए। अन्यथा LinAlgError उठाया जाएगा।

  1. - पायथन में N-आयामी सरणी का ग्रेडिएंट लौटाना

    ग्रेडिएंट की गणना आंतरिक बिंदुओं में दूसरी क्रम की सटीक केंद्रीय अंतरों का उपयोग करके की जाती है और सीमाओं पर पहली या दूसरी क्रम की सटीक एक-पक्षीय (आगे या पीछे) अंतरों का उपयोग किया जाता है। लौटाया गया ग्रेडिएंट इसलिए इनपुट सरणी के समान आकार का होता है। पहला पैरामीटर f एक N-आयामी सरणी है जिसमें एक अ

  1. - पायथन पैंडास - इंटरवल की लंबाई प्राप्त करें

    इंटरवल की लंबाई प्राप्त करने के लिए interval.length प्रॉपर्टी का उपयोग करें। आवश्यक लाइब्रेरी आयात करें import pandas as pd ओपन इंटरवल बनाएं closed पैरामीटर में neither मान का उपयोग करके ओपन इंटरवल सेट करें। एक ओपन इंटरवल (गणित में वर्गाकार कोष्ठक द्वारा दर्शाया गया) अपने एंडपॉइंट्स को शामिल नहीं

  1. - पायथन में जांचें कि सरणी सुंदर (beautiful) है या नहीं

    मान लीजिए हमारे पास अद्वितीय तत्वों की एक सरणी nums है। हमें जांचना है कि ये शर्तें पूरी होती हैं या नहीं: तत्व 1 से n की रेंज में होंगे। सरणी आरोही क्रम में सॉर्ट नहीं होनी चाहिए। उदाहरण के लिए, यदि nums = [2, 6, 1, 5, 3, 4] है, तो आउटपुट True होगा। हल करने का तरीका n := nums का आकार total := n