NumPy 1.14 - MaskedArray.ctypes

numpy.ma.MaskedArray.ctypes




numpy

numpy.ma.MaskedArray.ctypes

MaskedArray.ctypes

Ctypes मॉड्यूल के साथ सरणी के इंटरैक्शन को सरल बनाने के लिए एक ऑब्जेक्ट।

यह विशेषता एक ऐसी वस्तु बनाती है जो ctypes मॉड्यूल के साथ साझा लाइब्रेरी को कॉल करते समय सरणियों का उपयोग करना आसान बनाती है। लौटी हुई वस्तु अन्य लोगों के बीच है, डेटा, आकृति, और स्ट्राइड्स विशेषताएँ (नीचे नोट्स देखें) जो स्वयं ctypes ऑब्जेक्ट्स को लौटाते हैं जिन्हें एक साझा लाइब्रेरी में तर्कों के रूप में उपयोग किया जा सकता है।

पैरामीटर:

कोई नहीं

यह दिखाता है:

c : पायथन ऑब्जेक्ट

डेटा, आकृति, स्ट्रैड्स इत्यादि को पॉसिबल करना

यह भी देखें

numpy.ctypeslib

टिप्पणियाँ

इस ऑब्जेक्ट की सार्वजनिक विशेषताएँ नीचे दी गई हैं जिन्हें "गाइड टू न्यूमपी" में प्रलेखित किया गया था (हमने अनिर्दिष्ट सार्वजनिक विशेषताओं को छोड़ दिया है, साथ ही साथ निजी विशेषताओं को प्रलेखित किया गया है):

  • डेटा: पायथन पूर्णांक के रूप में सरणी के मेमोरी क्षेत्र के लिए एक सूचक। इस मेमोरी क्षेत्र में डेटा हो सकता है जो संरेखित नहीं है, या सही बाइट-ऑर्डर में नहीं है। स्मृति क्षेत्र भी लेखन योग्य नहीं हो सकता है। इस विशेषता के सरणी ध्वज और डेटा-प्रकार का सम्मान किया जाना चाहिए जब इस विशेषता को मनमाने ढंग से सी-कोड को पारित करने में परेशानी से बचने के लिए जिसमें पायथन दुर्घटनाग्रस्त शामिल हो सकते हैं। उपयोगकर्ता सावधान! इस विशेषता का मान स्वयं के समान ही है।
  • आकार (c_intp * self.ndim): लंबाई का एक ctypes सरणी self.ndim जहां इस प्लेटफॉर्म पर बेसटाइप dtype ('p') के अनुरूप C-पूर्णांक है। यह आधार-प्रकार मंच के आधार पर c_int, c_long, या c_longlong हो सकता है। C_intp प्रकार को numpy.ctypeslib के अनुसार परिभाषित किया गया है। Ctypes सरणी में अंतर्निहित सरणी का आकार होता है।
  • strides (c_intp * self.ndim): लंबाई का एक ctypes सरणी self.ndim, जहां आकार विशेषता के लिए बेसटाइप समान है। इस ctypes सरणी में अंतर्निहित सरणी से स्ट्राइड जानकारी है। यह स्ट्राइड जानकारी यह दिखाने के लिए महत्वपूर्ण है कि सरणी में अगले तत्व को प्राप्त करने के लिए कितने बाइट जंप करना चाहिए।
  • data_as (obj): किसी विशेष सी-टाइप ऑब्जेक्ट में डेटा पॉइंटर कास्ट लौटाएं। उदाहरण के लिए, self._as_parameter_ को कॉल करना self.data_as (ctypes.c_void_p) के बराबर है। शायद आप एक पॉइंटर के रूप में डेटा का उपयोग फ्लोटिंग-पॉइंट डेटा के ctypes ऐरे में करना चाहते हैं: self.data_as (ctypes.POINTER (ctypes.c_double))।
  • shape_as (obj): आकार tuple को कुछ अन्य c-type प्रकार की एक सरणी के रूप में लौटाएं। उदाहरण के लिए: self.shape_as (ctypes.c_short)।
  • strides_as (obj): स्ट्राइड्स टपल को कुछ अन्य सी-टाइप प्रकारों की एक सरणी के रूप में लौटाएं। उदाहरण के लिए: self.strides_as (ctypes.c_longlong)।

Ctypes विशेषता का उपयोग करके सावधान रहें - विशेष रूप से अस्थायी सरणियों या मक्खी पर निर्मित सरणियों पर। उदाहरण के लिए, कॉलिंग (a+b).ctypes.data_as(ctypes.c_void_p) स्मृति के लिए एक संकेतक लौटाता है जो अमान्य है क्योंकि अगले पायथन विवरण से पहले (a + b) के रूप में बनाई गई सरणी को (a+b).ctypes.data_as(ctypes.c_void_p) किया गया है। आप c=a+b या ct=(a+b).ctypes का उपयोग करके इस समस्या से बच सकते हैं। बाद के मामले में, ct सरणी के लिए एक संदर्भ धारण करेगा जब तक कि ct को हटाया या फिर से असाइन नहीं किया जाता है।

यदि ctypes मॉड्यूल उपलब्ध नहीं है, तो सरणी ऑब्जेक्ट्स की ctypes विशेषता अभी भी कुछ उपयोगी लौटाती है, लेकिन ctypes ऑब्जेक्ट वापस नहीं किए जाते हैं और इसके बजाय त्रुटियों को उठाया जा सकता है। विशेष रूप से, ऑब्जेक्ट में अभी भी पैरामीटर विशेषता होगी जो डेटा विशेषता के बराबर एक पूर्णांक लौटाएगा।

उदाहरण

>>> import ctypes
>>> x
array([[0, 1],
       [2, 3]])
>>> x.ctypes.data
30439712
>>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_long))
<ctypes.LP_c_long object at 0x01F01300>
>>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_long)).contents
c_long(0)
>>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_longlong)).contents
c_longlong(4294967296L)
>>> x.ctypes.shape
<numpy.core._internal.c_long_Array_2 object at 0x01FFD580>
>>> x.ctypes.shape_as(ctypes.c_long)
<numpy.core._internal.c_long_Array_2 object at 0x01FCE620>
>>> x.ctypes.strides
<numpy.core._internal.c_long_Array_2 object at 0x01FCE620>
>>> x.ctypes.strides_as(ctypes.c_longlong)
<numpy.core._internal.c_longlong_Array_2 object at 0x01F01300>