2013-05-23 7 views
6

मैं अपने numpy मुखौटा सरणी में सही/गलत मान उलटा करना चाहता हूँ।बेवकूफ उलटा मास्क

तो नीचे दिए गए उदाहरण में मैं डेटा सरणी में दूसरे मान को मास्क नहीं करना चाहता, मैं पहले और तीसरे मान को मास्क करना चाहता हूं।

नीचे केवल एक उदाहरण है। मेरा मुखौटा सरणी पहले चलने की तुलना में लंबी प्रक्रिया द्वारा बनाई गई है। तो मैं मास्क सरणी को स्वयं नहीं बदल सकता। क्या मूल्यों को उलटा करने का कोई और तरीका है?

import numpy 
data = numpy.array([[ 1, 2, 5 ]]) 
mask = numpy.array([[0,1,0]]) 

numpy.ma.masked_array(data, mask) 

उत्तर

11
import numpy 
data = numpy.array([[ 1, 2, 5 ]]) 
mask = numpy.array([[0,1,0]]) 

numpy.ma.masked_array(data, ~mask) #note this probably wont work right for non-boolean (T/F) values 
#or 
numpy.ma.masked_array(data, numpy.logical_not(mask)) 

उदाहरण

>>> a = numpy.array([False,True,False]) 
>>> ~a 
array([ True, False, True], dtype=bool) 
>>> numpy.logical_not(a) 
array([ True, False, True], dtype=bool) 
>>> a = numpy.array([0,1,0]) 
>>> ~a 
array([-1, -2, -1]) 
>>> numpy.logical_not(a) 
array([ True, False, True], dtype=bool) 
+0

अपने उदाहरण प्रतिलिपि बनाई जा रही के लिए, मैं logical_not और लहरिल ऑपरेटर के लिए अलग-अलग परिणाम मिला। जहां अपेक्षित मास्क ([[ट्रू फाल्स ट्रू]] में पूर्व परिणाम हैं, बाद में सभी मास्क तत्वों को सही बनाता है True – user508402

+0

एक logical_not है ... दूसरा बाइनरी नहीं है ... –