जब तुलना NumPy सरणी, उदा से जुड़े भाव पर पायथन बूलियन ऑपरेटरों (not
, and
, or
) का उपयोग करने की कोशिश कर आप आम तौर पर यह त्रुटि संदेश मिलता है
>>> x = np.arange(-5, 5)
>>> (x > -2) and (x < 2)
Traceback (most recent call last):
File "<ipython-input-6-475a0a26e11c>", line 1, in <module>
(x > -2) and (x < 2)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
क्योंकि इस तरह की तुलना के रूप में अजगर में अन्य की तुलना करने का विरोध किया, एकल बूलियन्स बजाय बूलियन्स की सरणियों बनाने (लेकिन शायद आप पहले से ही पता था कि) है कि: का हल की
>>> x > -2
array([False, False, False, False, True, True, True, True, True, True], dtype=bool)
>>> x < 2
array([ True, True, True, True, True, True, True, False, False, False], dtype=bool)
भाग अपने समस्या and
np.logical_and
द्वारा प्रतिस्थापित करने के लिए संभव है, जो np.bool
के दो सरणीओं पर और संचालन को प्रसारित करती है।
>>> np.logical_and(x > -2, x < 2)
array([False, False, False, False, True, True, True, False, False, False], dtype=bool)
>>> x[np.logical_and(x > -2, x < 2)]
array([-1, 0, 1])
हालांकि, बूलियन्स के ऐसे सरणियों साधारण अजगर सूचियों में सूचकांक करने के लिए इस्तेमाल नहीं किया जा सकता है, तो आप एक सरणी है कि बदलने की आवश्यकता:
rbs = np.array([ish[4] for ish in realbooks])
कौन सी रेखा त्रुटि का कारण बनती है? कृपया अपना कोड प्रारूपित करें ताकि यह वास्तव में चलता है। –
यदि आप var के मान को मुद्रित करते हैं तो इससे मदद मिलेगी। एक अनुमान में, समस्या स्ट्रिंग/फ्लोट/पाठ प्रतिस्थापन चर में है जिसे आप कम कर रहे हैं ... मूल डेटा कैसा दिखता है जिसके लिए संचालन की श्रृंखला की आवश्यकता होगी? – abought