मुझे डॉक , इस पोस्ट और इस अन्य पोस्ट कोnumpy.where() पढ़ने के बावजूद ठीक से समझने में परेशानी है ।
क्या कोई 1D और 2D सरणियों के साथ चरण-दर-चरण टिप्पणी उदाहरण प्रस्तुत कर सकता है?
मुझे डॉक , इस पोस्ट और इस अन्य पोस्ट कोnumpy.where() पढ़ने के बावजूद ठीक से समझने में परेशानी है ।
क्या कोई 1D और 2D सरणियों के साथ चरण-दर-चरण टिप्पणी उदाहरण प्रस्तुत कर सकता है?
जवाबों:
थोड़ी देर तक इधर-उधर फुदकने के बाद, मैंने चीजों का पता लगाया, और उन्हें यहाँ पोस्ट कर रहा हूँ उम्मीद है कि यह दूसरों की मदद करेगा।
सहज रूप से, np.whereयह पूछने के समान है " मुझे बताएं कि इस सरणी में प्रविष्टियां किसी दिए गए शर्त को संतुष्ट करती हैं "।
>>> a = np.arange(5,10)
>>> np.where(a < 8) # tell me where in a, entries are < 8
(array([0, 1, 2]),) # answer: entries indexed by 0, 1, 2
इसका उपयोग सरणी में प्रविष्टियां प्राप्त करने के लिए भी किया जा सकता है जो शर्त को पूरा करते हैं:
>>> a[np.where(a < 8)]
array([5, 6, 7]) # selects from a entries 0, 1, 2
जब a2d सरणी होती है, तो np.where()पंक्ति idx का एक सरणी देता है, और col idx का एक सरणी:
>>> a = np.arange(4,10).reshape(2,3)
array([[4, 5, 6],
[7, 8, 9]])
>>> np.where(a > 8)
(array(1), array(2))
1d मामले में, हम np.where()2d सरणी में प्रविष्टियाँ प्राप्त करने के लिए उपयोग कर सकते हैं जो शर्त को पूरा करती हैं:
>>> a[np.where(a > 8)] # selects from a entries 0, 1, 2
सरणी ([9])
ध्यान दें, जब a1d है , तब np.where()भी पंक्ति idx का एक सरणी और col idx का एक सरणी देता है, लेकिन कॉलम लंबाई 1 के हैं, इसलिए बाद वाला खाली सरणी है।
np.where(2d_array)साफ करने के लिए धन्यवाद! आपको अपना खुद का जवाब स्वीकार करना चाहिए। e: ओह, यह बंद है। खैर, यह नहीं होना चाहिए
np.whereअन्यथा पूर्ण उत्तर। फ़ंक्शन भी स्थिति के आधार पर x और y सरणी से तत्वों का चयन कर सकता है। इस टिप्पणी में सीमित स्थान लेकिन देखें: np.where(np.array([[False,False,True], [True,False,False]]), np.array([[8,2,6], [9,5,0]]), np.array([[4,8,7], [3,2,1]]))वापस आ जाएगी array([[4, 8, 6], [9, 2, 1]])। ध्यान दें कि x और y के कौन से तत्व
conditionप्रदान किया जाता है, तो यह फ़ंक्शन शॉर्टहैंड है np.asarray(condition).nonzero()।
यहाँ थोड़ा और मज़ा है। मैंने पाया है कि बहुत बार NumPy ठीक वही करता है जो मैं चाहता हूं कि वह करता है - कभी-कभी यह मेरे लिए सिर्फ चीजों को आज़माने के लिए तेजी से होता है क्योंकि यह डॉक्स पढ़ने के लिए है। वास्तव में दोनों का मिश्रण सर्वोत्तम है।
मुझे लगता है कि आपका उत्तर ठीक है (और यदि आप चाहें तो इसे स्वीकार करना ठीक है)। यह सिर्फ "अतिरिक्त" है।
import numpy as np
a = np.arange(4,10).reshape(2,3)
wh = np.where(a>7)
gt = a>7
x = np.where(gt)
print "wh: ", wh
print "gt: ", gt
print "x: ", x
देता है:
wh: (array([1, 1]), array([1, 2]))
gt: [[False False False]
[False True True]]
x: (array([1, 1]), array([1, 2]))
... परंतु:
print "a[wh]: ", a[wh]
print "a[gt] ", a[gt]
print "a[x]: ", a[x]
देता है:
a[wh]: [8 9]
a[gt] [8 9]
a[x]: [8 9]