पुराना उत्तर
यह भ्रामक है। यह आपको (उन सभी को) जहां आपकी प्रतिमा सत्य है, का स्थान देता है।
इसलिए:
>>> a = np.arange(100)
>>> np.where(a > 30)
(array([31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
99]),)
>>> np.where(a == 90)
(array([90]),)
a = a*40
>>> np.where(a > 1000)
(array([26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
94, 95, 96, 97, 98, 99]),)
>>> a[25]
1000
>>> a[26]
1040
मैं इसे list.index () के विकल्प के रूप में उपयोग करता हूं, लेकिन इसके कई अन्य उपयोग भी हैं। मैंने इसे 2 डी सरणियों के साथ कभी उपयोग नहीं किया है।
http://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html
नया उत्तर
ऐसा लगता है कि व्यक्ति कुछ अधिक मौलिक पूछ रहा था।
सवाल यह था कि आप एक ऐसी चीज़ को कैसे लागू कर सकते हैं जो एक फ़ंक्शन (जैसे जहां) को यह जानने की अनुमति देता है कि क्या अनुरोध किया गया था।
पहले ध्यान दें कि किसी भी तुलना ऑपरेटर को कॉल करना एक दिलचस्प बात है।
a > 1000
array([False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True`, True, True, True, True, True, True, True, True, True], dtype=bool)`
यह "__gt__" विधि को ओवरलोड करके किया जाता है। उदाहरण के लिए:
>>> class demo(object):
def __gt__(self, item):
print item
>>> a = demo()
>>> a > 4
4
जैसा कि आप देख सकते हैं, "a> 4" वैध कोड था।
आप सभी ओवरलोड कार्यों की पूरी सूची और प्रलेखन यहां प्राप्त कर सकते हैं: http://docs.python.org/reference/datodod.html
कुछ ऐसा जो अविश्वसनीय है कि ऐसा करना कितना सरल है। अजगर में सभी ऑपरेशन इस तरह से किए जाते हैं। कह ए> बी एक के बराबर है। जीईटी (बी)!
numpy.where
2 'परिचालन मोड', पहले एक रिटर्न की क्या ज़रूरत हैindices
, जहांcondition is True
और वैकल्पिक पैरामीटर अगरx
औरy
मौजूद हैं (के रूप में ही आकारcondition
, या इस तरह के आकार के broadcastable!), यह से मूल्यों को वापस आ जाएगीx
जबcondition is True
अन्यथा सेy
। तो यहwhere
अधिक बहुमुखी बनाता है और इसे अधिक बार उपयोग करने में सक्षम बनाता है। धन्यवाद