2016-02-11 12 views
6

की सूची में मुखौटा (बूलियन) सरणी कनवर्ट करें मेरे पास 'मास्क' (बूलियन) 2 डी सरणी है और मैं इसे निर्देशांक की सूची में बदलना चाहता हूं। ऐसा करने के लिए उचित numpythonic तरीका क्या है?एक्स, वाई निर्देशांक

इनपुट कुछ इस तरह होगा:

[[False,False,True], 
[False,True,False]] 

और ऊपर इनपुट दिया, उत्पादन किया जाना चाहिए:

[(0,2),(1,1)] 

उत्तर

5

उपयोग

  • np.where: अगर इस्तेमाल किया जा सकता आप इसके बाद बाद में एक और सरणी इंडेक्स करना चाहते हैं। लेकिन नतीजा यह नहीं है कि आपने जो कुछ निर्दिष्ट किया है।
  • np.argwhere: यदि आप अपना निर्दिष्ट परिणाम चाहते हैं। लेकिन इस परिणाम का उपयोग किसी अन्य सरणी को अनुक्रमणित करने के लिए नहीं किया जा सकता है।

कुछ उदाहरण कोड:

import numpy as np 
a = np.array([[False,False,True], 
       [False,True,False]]) 
np.argwhere(a) # equivalent to checking a == True 
#array([[0, 2], 
#  [1, 1]], dtype=int64) 
np.where(a) # equivalent to checking a == True 
#(array([0, 1], dtype=int64), array([2, 1], dtype=int64)) 

और यदि आप एक सूची में अपने परिणाम परिवर्तित करना चाहते हैं एक ndarray.tolist() विधि नहीं है। तो आप np.argwhere(a).tolist() पर कॉल कर सकते हैं।

संबंधित मुद्दे