कैसे ठीक करें: केवल आकार 1 की सरणियों को पायथन स्केलर में परिवर्तित किया जा सकता है


पायथन का उपयोग करते समय आपके सामने एक त्रुटि आ सकती है:

 TypeError : only size-1 arrays can be converted to Python scalars

यह त्रुटि अक्सर तब होती है जब फ्लोट मानों की NumPy सरणी को पूर्णांक मानों की सरणी में बदलने के लिए np.int() का उपयोग करने का प्रयास किया जाता है।

हालाँकि, यह फ़ंक्शन मानों की एक श्रृंखला के बजाय केवल एक मान स्वीकार करता है।

इसके बजाय, आपको फ्लोट मानों की NumPy सरणी को पूर्णांक मानों की सरणी में बदलने के लिए x.astype(int) का उपयोग करना चाहिए, क्योंकि यह फ़ंक्शन किसी सरणी को स्वीकार करने में सक्षम है।

निम्नलिखित उदाहरण दिखाता है कि व्यवहार में इस त्रुटि को कैसे ठीक किया जाए।

त्रुटि को पुन: उत्पन्न कैसे करें

मान लीजिए कि हम फ़्लोट मानों की निम्नलिखित NumPy सरणी बनाते हैं:

 import numpy as np

#create NumPy array of float values
x = np. array ([3, 4.5, 6, 7.7, 9.2, 10, 12, 14.1, 15])

अब मान लीजिए कि हम फ्लोट मानों की इस सरणी को पूर्णांक मानों की एक सरणी में बदलने का प्रयास करते हैं:

 #attempt to convert array to integer values
n.p. int (x)

TypeError : only size-1 arrays can be converted to Python scalars 

हमें एक प्रकार त्रुटि प्राप्त होती है क्योंकि np.int() फ़ंक्शन केवल एकल मान स्वीकार करता है, मानों की सरणी नहीं।

त्रुटि को कैसे ठीक करें

फ्लोट मानों की NumPy सरणी को पूर्णांक मानों में बदलने के लिए, हम निम्नलिखित कोड का उपयोग कर सकते हैं:

 #convert array of float values to integer values
x. astype (int)

array([ 3, 4, 6, 7, 9, 10, 12, 14, 15])

ध्यान दें कि मानों की सरणी को पूर्णांकों में बदल दिया गया है और हमें कोई त्रुटि नहीं मिल रही है क्योंकि astype() फ़ंक्शन मानों की एक सरणी को संभालने में सक्षम है।

नोट : आप astype() फ़ंक्शन के लिए संपूर्ण दस्तावेज़ यहां पा सकते हैं।

अतिरिक्त संसाधन

निम्नलिखित ट्यूटोरियल बताते हैं कि पायथन में अन्य सामान्य त्रुटियों को कैसे ठीक किया जाए:

पंडों में KeyError को कैसे ठीक करें
कैसे ठीक करें: वैल्यूएरर: फ्लोट NaN को int में बदलने में असमर्थ
कैसे ठीक करें: वैल्यूएरर: ऑपरेंड को आकृतियों के साथ प्रसारित नहीं किया जा सका

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *