NumPy 1.14 - numpy.reshape()

numpy.reshape




numpy

numpy.reshape

numpy.reshape(a, newshape, order='C') [source]

अपने डेटा को बदलने के बिना एक सरणी को एक नया आकार देता है।

पैरामीटर:

a : array_like

पुनर्व्यवस्थित करने के लिए सरणी।

न्यूज़हैप : इन्ट्स का इंट या ट्यूपल

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

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

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

यह दिखाता है:

reshaped_array : ndarray

यदि संभव हो तो यह एक नया दृश्य ऑब्जेक्ट होगा; अन्यथा, यह एक प्रति होगी। ध्यान दें कि दिए गए एरे के मेमोरी लेआउट (C- या Fortran- contiguous) की कोई गारंटी नहीं है।

यह भी देखें

ndarray.reshape
समतुल्य विधि।

टिप्पणियाँ

डेटा की नकल के बिना किसी सरणी के आकार को बदलना हमेशा संभव नहीं होता है। यदि आप डेटा की प्रतिलिपि बनाते समय कोई त्रुटि चाहते हैं, तो आपको सरणी के आकार विशेषता को नया आकार प्रदान करना चाहिए:

>>> a = np.zeros((10, 2))
# A transpose makes the array non-contiguous
>>> b = a.T
# Taking a view makes it possible to modify the shape without modifying
# the initial object.
>>> c = b.view()
>>> c.shape = (20)
AttributeError: incompatible shape for a non-contiguous array

order कीवर्ड इंडेक्स ऑर्डर को ऑर्डर a और फिर आउटपुट अरै में रखने के लिए दोनों देता है। उदाहरण के लिए, मान लें कि आपके पास एक सरणी है:

>>> a = np.arange(6).reshape((3, 2))
>>> a
array([[0, 1],
       [2, 3],
       [4, 5]])

आप पहली बार सरणी को रिवाइवल करने के बारे में सोच सकते हैं (दिए गए इंडेक्स ऑर्डर का उपयोग करके), फिर रैवेल्ड एरे से तत्वों को एक ही तरह के इंडेक्स ऑर्डरिंग का उपयोग करते हुए नए सरणी में सम्मिलित करें जैसा कि आरवलिंग के लिए उपयोग किया गया था।

>>> np.reshape(a, (2, 3)) # C-like index ordering
array([[0, 1, 2],
       [3, 4, 5]])
>>> np.reshape(np.ravel(a), (2, 3)) # equivalent to C ravel then C reshape
array([[0, 1, 2],
       [3, 4, 5]])
>>> np.reshape(a, (2, 3), order='F') # Fortran-like index ordering
array([[0, 4, 3],
       [2, 1, 5]])
>>> np.reshape(np.ravel(a, order='F'), (2, 3), order='F')
array([[0, 4, 3],
       [2, 1, 5]])

उदाहरण

>>> a = np.array([[1,2,3], [4,5,6]])
>>> np.reshape(a, 6)
array([1, 2, 3, 4, 5, 6])
>>> np.reshape(a, 6, order='F')
array([1, 4, 2, 5, 3, 6])
>>> np.reshape(a, (3,-1))       # the unspecified value is inferred to be 2
array([[1, 2],
       [3, 4],
       [5, 6]])