एक साधारण सवाल होना चाहिए, लेकिन मुझे कहीं भी जवाब नहीं मिल रहा है। पाइथन में ~
ऑपरेटर को बिटवाईव इनवर्जन ऑपरेटर के रूप में प्रलेखित किया गया है। ठीक। मैं उचित रूप में सिज़ोफ्रेनिया व्यवहार पर ध्यान दिया है, हालांकि, बुद्धि के लिए:पायथन टिल्ड यूनरी ऑपरेटर अस्वीकरण numpy bool array
~True -> -2
~1 -> -2
~False -> -1
~0 -> -1
~numpy.array([True,False],dtype=int) -> array([-2,-1])
~numpy.array([True,False],dtype=bool) -> array([False,True])
पहले 4 उदाहरण में, मैं भले ही यह बूलियन है कि अजगर लागू कर रहा है (के रूप में दस्तावेज) देख सकते हैं ~x = -(x+1)
, इनपुट एक पूर्णांक के रूप में इलाज के साथ । इसलिए, एक स्केलर बूलियन के लिए, ~
को तार्किक अस्वीकृति के रूप में नहीं माना जाता है। यह नहीं कि व्यवहार एक int प्रकार के साथ बुलियन मूल्यों के साथ परिभाषित एक numpy सरणी पर समान है।
~
क्यों एक बूलियन सरणी पर लॉजिकल अस्वीकरण ऑपरेटर के रूप में काम करता है (यह भी ध्यान दें: ~numpy.isfinite(numpy.inf) -> True
?)?
यह बेहद परेशान है कि मुझे not()
को स्केलर पर उपयोग करना होगा, लेकिन not()
किसी सरणी को अस्वीकार करने के लिए काम नहीं करेगा। फिर एक सरणी के लिए, मैं ~
का उपयोग करना चाहिए, लेकिन ~
एक अदिश नकारना करने के लिए काम नहीं करेगा ... इसलिए यह कर सकते हैं '
स्पष्टीकरण के लिए धन्यवाद और विशेष रूप से '&' और '|' का उल्लेख करने के लिए धन्यवाद। मैं उन लोगों के बारे में नहीं जानता था, और इसके बजाय logical_and और logical_or का उपयोग किया था। –
मैं उम्र के लिए 'numpy' का उपयोग कर रहा हूं और अब तक उन लोगों के उद्देश्य को नहीं जानता था जो 'np.False_'' जैसी प्रतीत होती है। यह सब अब समझ में आता है – dashesy