अपवाद का कारण andअंतर्निहित कॉल है bool। पहले बाएं ऑपरेंड पर और (अगर बाएं ऑपरेंड है True) तो राइट ऑपरेंड पर। तो x and yके बराबर है bool(x) and bool(y)।
हालाँकि एक boolपर numpy.ndarray(यदि इसमें एक से अधिक तत्व हैं) आपके द्वारा देखे गए अपवाद को फेंक देगा:
>>> import numpy as np
>>> arr = np.array([1, 2, 3])
>>> bool(arr)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
bool()कॉल निहित में है and, लेकिन यह भी में if, while, or, तो निम्न उदाहरण में से किसी भी असफल हो जायेगी:
>>> arr and arr
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
>>> if arr: pass
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
>>> while arr: pass
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
>>> arr or arr
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
पायथन में अधिक फ़ंक्शन और कथन हैं जो boolकॉल छिपाते हैं, उदाहरण के लिए 2 < x < 10लेखन का एक और तरीका है 2 < x and x < 10। और andकॉल करेंगे bool: bool(2 < x) and bool(x < 10)।
इसके लिए तत्व-वार समतुल्य andहोगा np.logical_and, इसी तरह आप इसके लिए np.logical_orबराबर का उपयोग कर सकते हैं or।
बूलियन सरणियों के लिए - और तुलना की तरह है <, <=, ==, !=, >=और >NumPy पर सरणियों बूलियन NumPy सरणी वापसी - आप भी उपयोग कर सकते हैं तत्व के लिहाज से बिटवाइज़ कार्य (और ऑपरेटरों): np.bitwise_and( &ऑपरेटर)
>>> np.logical_and(arr > 1, arr < 3)
array([False, True, False], dtype=bool)
>>> np.bitwise_and(arr > 1, arr < 3)
array([False, True, False], dtype=bool)
>>> (arr > 1) & (arr < 3)
array([False, True, False], dtype=bool)
और bitwise_or( |ऑपरेटर):
>>> np.logical_or(arr <= 1, arr >= 3)
array([ True, False, True], dtype=bool)
>>> np.bitwise_or(arr <= 1, arr >= 3)
array([ True, False, True], dtype=bool)
>>> (arr <= 1) | (arr >= 3)
array([ True, False, True], dtype=bool)
तार्किक और बाइनरी फ़ंक्शंस की एक पूरी सूची को NumPy प्रलेखन में पाया जा सकता है: