NumPy 1.14

numpy.nditer




numpy

numpy.nditer

class numpy.nditer [source]

सरणियों पर पुनरावृति करने के लिए कुशल बहु-आयामी पुनरावृत्त वस्तु। इस ऑब्जेक्ट का उपयोग शुरू करने के लिए, सरणी चलना के परिचयात्मक मार्गदर्शिका देखें।

पैरामीटर:

op : ndarray या array_like का अनुक्रम

सरणी (ओं) को खत्म करने के लिए।

झंडे : अनुक्रम के str, वैकल्पिक

यात्रा करने वाले के व्यवहार को नियंत्रित करने के लिए झंडे।

  • "बफ़र्ड" आवश्यकता होने पर बफरिंग को सक्षम बनाता है।
  • "C_index" एक सी-ऑर्डर इंडेक्स को ट्रैक करने का कारण बनता है।
  • "F_index" एक फोरट्रान-ऑर्डर इंडेक्स को ट्रैक करने का कारण बनता है।
  • "मल्टी_इंडेक्स" एक बहु-सूचकांक, या सूचकांकों का एक प्रति प्रतिपल आयाम के साथ ट्रैक करने का कारण बनता है।
  • "Common_dtype" के कारण सभी ऑपरेंड्स को एक सामान्य डेटा प्रकार में परिवर्तित किया जा सकता है, जिसमें आवश्यकतानुसार कॉपी या बफरिंग होती है।
  • "Copy_if_overlap" इट्रेटर को यह निर्धारित करने का कारण बनता है कि क्या रीड ऑपरेंड को लिखने वाले ऑपरेंड के साथ ओवरलैप किया गया है, और ओवरलैप से बचने के लिए आवश्यक के रूप में अस्थायी प्रतियां बनाते हैं। कुछ मामलों में झूठी सकारात्मक (अनावश्यक नकल) संभव है।
  • जब तक रीसेट () कॉल नहीं किया जाता है तब तक "देरी_ब्यूफालोक" बफ़र्स के आवंटन में देरी करता है। उनके मान को बफ़र्स में कॉपी करने से पहले "आवंटित" ऑपरेंड करने की अनुमति देता है।
  • "External_loop" शून्य-आयामी सरणियों के बजाय कई मानों के साथ दिए गए values को एक आयामी सरणियों का कारण बनता है।
  • जब "बफ़र" और "एक्सटर्नल_लूप" दोनों का उपयोग किया जाता है तो "grow_inner" value सरणी आकारों को बफर आकार से बड़ा बनाने की अनुमति देता है।
  • "राउंडेड" इट्राइटर को पुनरावृत्त मानों की उप-श्रेणी तक सीमित रखने की अनुमति देता है।
  • "Refs_ok" ऑब्जेक्ट प्रकारों जैसे संदर्भ प्रकारों के पुनरावृत्ति को सक्षम करता है।
  • “कम_ओक” “रीडराईट” ऑपरेंड्स के पुनरावृत्ति को सक्षम बनाता है जो प्रसारित होते हैं, जिसे कमी ऑपरेंड के रूप में भी जाना जाता है।
  • "Zerosize_ok" itersize शून्य होने की अनुमति देता है।

op_flags : str की सूची, वैकल्पिक

यह प्रत्येक ऑपरेंड के झंडे की एक सूची है। कम से कम, "आसानी से", "रीडराइट" या "राइटली" में से एक को निर्दिष्ट किया जाना चाहिए।

  • "आसानी से" इंगित करता है कि ऑपरेंड केवल से पढ़ा जाएगा।
  • "Readwrite" इंगित करता है कि ऑपरेंड से पढ़ा और लिखा जाएगा।
  • "राइटली" इंगित करता है कि ऑपरेंड केवल लिखा जाएगा।
  • "No_broadcast" ऑपरेंड को प्रसारित होने से रोकता है।
  • "Contig" ऑपरेंड डेटा को सन्निहित होने के लिए बाध्य करता है।
  • "संरेखित" ऑपरेंड डेटा को संरेखित करने के लिए मजबूर करता है।
  • "Nbo" ऑपरेंड डेटा को मूल बाइट क्रम में होने के लिए मजबूर करता है।
  • "कॉपी" यदि आवश्यक हो तो एक अस्थायी केवल-पढ़ने के लिए कॉपी की अनुमति देता है।
  • यदि आवश्यक हो, तो “updateifcopy” एक अस्थायी रीड-राइट कॉपी की अनुमति देता है।
  • यदि यह op पैरामीटर में नहीं है, तो "आवंटित" सरणी आवंटित करने का कारण बनता है।
  • "No_subtype" एक उपप्रकार का उपयोग करके "आवंटित" ऑपरेंड को रोकता है।
  • "Arraymask" इंगित करता है कि यह ऑपरेंड 'राइटमास्कैस्ड' फ्लैग सेट के साथ ऑपरेंड करने के लिए तत्वों का चयन करने के लिए उपयोग करने वाला मास्क है। पुनरावृत्त इसे लागू नहीं करता है, लेकिन बफर से सरणी पर लिखते समय, यह केवल उन तत्वों को कॉपी करता है जो इस मुखौटा द्वारा इंगित किए गए हैं।
  • 'राइटमास्कैड' इंगित करता है कि केवल ऐसे तत्व जहां चुने गए 'एरेस्मैस्क' ऑपरेंड ट्रू को लिखे जाएंगे।
  • "ओवरलैप_स्सुमे_लीमेंटवाइज" का उपयोग उन ऑपरेंड को चिह्नित करने के लिए किया जा सकता है जो केवल इट्रेटर ऑर्डर में एक्सेस किए जाते हैं, जब "copy_if_overlap" मौजूद होने पर कम रूढ़िवादी कॉपी करने की अनुमति मिलती है।

op_dtypes : dtype या ttle of dtype (s), वैकल्पिक

आवश्यक डेटा प्रकार (ओं) का संचालन। यदि कॉपी या बफरिंग सक्षम है, तो डेटा को उनके मूल प्रकारों से / में परिवर्तित कर दिया जाएगा।

आदेश : {'C', 'F', 'A', 'K'}, वैकल्पिक

पुनरावृति क्रम को नियंत्रित करता है। 'सी' का अर्थ है सी ऑर्डर, 'एफ' का मतलब है फोरट्रान ऑर्डर, 'ए' का मतलब 'एफ' ऑर्डर है, अगर सभी एरर्स फोर्ट्रान सन्निहित हैं, 'सी' ऑर्डर अन्यथा, और 'के' का मतलब ऑर्डर के करीब है क्योंकि एरे तत्व दिखाई देते हैं। संभव के रूप में स्मृति में। यह "आवंटित" ऑपरेंड्स के एलिमेंट मेमोरी ऑर्डर को भी प्रभावित करता है, क्योंकि उन्हें इट्रिजन ऑर्डर के साथ संगत होने के लिए आवंटित किया जाता है। डिफ़ॉल्ट 'के' है।

कास्टिंग : {'नहीं', 'इक्विव', 'सेफ', 'समान_किंडन', 'असुरक्षित'}, वैकल्पिक

कॉपी या बफरिंग करते समय किस प्रकार की डेटा कास्टिंग हो सकती है, इसे नियंत्रित करता है। इसे 'असुरक्षित' पर सेट करने की अनुशंसा नहीं की जाती है, क्योंकि यह संचय को प्रतिकूल रूप से प्रभावित कर सकता है।

  • 'नहीं' का अर्थ है कि डेटा प्रकारों को बिल्कुल नहीं डाला जाना चाहिए।
  • 'इक्विव' का मतलब केवल बाइट-ऑर्डर परिवर्तन की अनुमति है।
  • s सुरक्षित ’का मतलब केवल वे ही जातियां हैं जो मूल्यों को संरक्षित कर सकती हैं।
  • 'same_kind' का अर्थ है केवल एक प्रकार के भीतर सुरक्षित जाति या जाति, जैसे कि float64 से float32 तक की अनुमति है।
  • 'असुरक्षित' का अर्थ है कि कोई भी डेटा रूपांतरण हो सकता है।

op_axes : वैकल्पिक सूची की सूची, वैकल्पिक

यदि प्रदान किया गया है, तो प्रत्येक परिचालनों के लिए कोई किलों की सूची या कोई भी नहीं है। एक ऑपरेंड के लिए कुल्हाड़ियों की सूची पुनरावृत्ति के आयाम से ऑपरेटर के आयामों तक एक मानचित्रण है। -1 का मान प्रविष्टियों के लिए रखा जा सकता है, जिससे उस आयाम को "न्यूएक्सिस" माना जाएगा।

itershape : टुपल इन्ट्स , वैकल्पिक

इटरेटर का वांछित आकार। यह op_axes द्वारा मैप किए गए आयाम के साथ "आवंटित" ऑपरेंड की अनुमति देता है जो उस आयाम के लिए 1 के बराबर मूल्य प्राप्त करने के लिए एक अलग ऑपरेंड के आयाम के अनुरूप नहीं है।

बफ़रसाइज़ : इंट, ऑप्शनल

जब बफरिंग सक्षम होती है, तो अस्थायी बफ़र्स के आकार को नियंत्रित करता है। डिफ़ॉल्ट मान के लिए 0 पर सेट करें।

टिप्पणियाँ

nditer को flatiter nditer पीछे nditer कार्यान्वयन को NumPy C API द्वारा भी उजागर किया गया है।

पायथन एक्सपोजर दो पुनरावृत्ति इंटरफेस की आपूर्ति करता है, एक जो पायथन इट्रर प्रोटोकॉल का अनुसरण करता है, और दूसरा जो सी-स्टाइल डू-जबकि पैटर्न को प्रतिबिंबित करता है। देशी पायथन दृष्टिकोण ज्यादातर मामलों में बेहतर है, लेकिन यदि आपको इट्रेटर के निर्देशांक या सूचकांक की आवश्यकता है, तो सी-स्टाइल पैटर्न का उपयोग करें।

उदाहरण

यहां बताया गया है कि हम पायथन इटरेटर प्रोटोकॉल का उपयोग करके एक iter_add फ़ंक्शन कैसे लिख सकते हैं:

def iter_add_py(x, y, out=None):
    addop = np.add
    it = np.nditer([x, y, out], [],
                [['readonly'], ['readonly'], ['writeonly','allocate']])
    for (a, b, c) in it:
        addop(a, b, out=c)
    return it.operands[2]

यहाँ एक ही फ़ंक्शन है, लेकिन C- शैली पैटर्न का अनुसरण कर रहा है:

def iter_add(x, y, out=None):
    addop = np.add

    it = np.nditer([x, y, out], [],
                [['readonly'], ['readonly'], ['writeonly','allocate']])

    while not it.finished:
        addop(it[0], it[1], out=it[2])
        it.iternext()

    return it.operands[2]

यहां एक उदाहरण बाहरी उत्पाद फ़ंक्शन है:

def outer_it(x, y, out=None):
    mulop = np.multiply

    it = np.nditer([x, y, out], ['external_loop'],
            [['readonly'], ['readonly'], ['writeonly', 'allocate']],
            op_axes=[range(x.ndim)+[-1]*y.ndim,
                     [-1]*x.ndim+range(y.ndim),
                     None])

    for (a, b, c) in it:
        mulop(a, b, out=c)

    return it.operands[2]

>>> a = np.arange(2)+1
>>> b = np.arange(3)+1
>>> outer_it(a,b)
array([[1, 2, 3],
       [2, 4, 6]])

यहाँ एक उदाहरण समारोह है जो "लंबोदर" की तरह संचालित होता है:

def luf(lamdaexpr, *args, **kwargs):
    "luf(lambdaexpr, op1, ..., opn, out=None, order='K', casting='safe', buffersize=0)"
    nargs = len(args)
    op = (kwargs.get('out',None),) + args
    it = np.nditer(op, ['buffered','external_loop'],
            [['writeonly','allocate','no_broadcast']] +
                            [['readonly','nbo','aligned']]*nargs,
            order=kwargs.get('order','K'),
            casting=kwargs.get('casting','safe'),
            buffersize=kwargs.get('buffersize',0))
    while not it.finished:
        it[0] = lamdaexpr(*it[1:])
        it.iternext()
    return it.operands[0]

>>> a = np.arange(5)
>>> b = np.ones(5)
>>> luf(lambda i,j:i*i + j/2, a, b)
array([  0.5,   1.5,   4.5,   9.5,  16.5])

गुण

dtypes (ttle of dtype (s)) मान में प्रदान किए गए मानों के डेटा प्रकार। यह ऑपरेंड डेटा प्रकारों से भिन्न हो सकता है यदि बफरिंग सक्षम है।
ख़त्म होना (बूल) ऑपरेंड्स पर चलना समाप्त हो गया है या नहीं।
has_delayed_bufalloc (बूल) यदि सही है, तो "देरी_ब्यूफालोक" ध्वज के साथ इट्रेटर बनाया गया था, और अभी तक इस पर कोई रीसेट () फ़ंक्शन नहीं कहा गया था।
has_index (बूल) यदि सही है, तो "c_index" या "f_index" ध्वज के साथ इट्रेटर बनाया गया था, और इसे पुनः प्राप्त करने के लिए संपत्ति index का उपयोग किया जा सकता है।
has_multi_index (बूल) यदि सही है, तो "मल्टी_इंडेक्स" फ्लैग के साथ इटरेटर बनाया गया था, और इसे पुनः प्राप्त करने के लिए प्रॉपर्टी multi_index का उपयोग किया जा सकता है।
सूची जब "c_index" या "f_index" ध्वज का उपयोग किया गया था, तो यह गुण अनुक्रमणिका तक पहुँच प्रदान करता है। यदि has_index प्राप्त किया गया है और has_index गलत है तो एक has_index है।
iterationneedsapi (बूल) क्या पुनरावृत्ति को पायथन एपीआई तक पहुंच की आवश्यकता होती है, उदाहरण के लिए यदि ऑपरेंड में से एक ऑब्जेक्ट सरणी है।
iterindex (int) एक सूचकांक जो पुनरावृत्ति के क्रम से मेल खाता है।
itersize (int) पुनरावृति का आकार।
itviews स्मृति में operands का संरचित दृश्य (ओं), operands व्यवस्थित और अनुकूलित इट्रेटर एक्सेस पैटर्न से मेल खाता है।
multi_index जब "मल्टी_इंडेक्स" ध्वज का उपयोग किया गया था, तो यह संपत्ति सूचकांक तक पहुंच प्रदान करती है। यदि एक्सेस किया हुआ है और has_multi_index गलत है तो एक ValueError उठाता है।
ndim (int) इटरेटर का आयाम।
nop (int) इटरेटर ऑपरेंड की संख्या।
ऑपरेंड (टुपल ऑफ ऑपरेन्ड (एस)) सरणी (ओं) पर पुनरावृत्त होना।
आकार (टुपल्स ऑफ़ इन्ट्स) टुपल, आकृति का आकार।
मूल्य वर्तमान पुनरावृत्ति पर operands मूल्य। आम तौर पर, यह एरे स्केलर का एक टपल है, लेकिन अगर ध्वज "आउटर_लूप" का उपयोग किया जाता है, तो यह एक आयामी सरणियों का एक टपल है।

तरीके

copy () इसकी वर्तमान स्थिति में पुनरावृत्त की एक प्रति प्राप्त करें।
debug_print () nditer उदाहरण की वर्तमान स्थिति को प्रिंट करें और stdout को डिबग जानकारी दें।
enable_external_loop () जब निर्माण के दौरान "external_loop" का उपयोग नहीं किया गया था, लेकिन वांछित है, तो यह पुनरावृत्ति को संशोधित करने के लिए व्यवहार करता है जैसे कि ध्वज निर्दिष्ट किया गया था।
iternext () जांचें कि क्या पुनरावृत्तियों को छोड़ दिया गया है, और परिणाम वापस किए बिना एक ही आंतरिक पुनरावृत्ति करें।
remove_axis (i) कुल्हाड़ी से कुल्हाड़ी निकालता है।
remove_multi_index () जब "मल्टी_इंडेक्स" ध्वज निर्दिष्ट किया गया था, तो यह इसे हटा देता है, जिससे आंतरिक पुनरावृत्ति संरचना को आगे अनुकूलित किया जा सकता है।
reset () अपनी प्रारंभिक अवस्था में पुनरावृत्ति करने वाले को रीसेट करें।