आपका x
3x2 है :
In [380]: rowmask=np.array([False,False,True])
:
In [379]: x
Out[379]:
array([[1, 2],
[2, 3],
[3, 4]])
एक 3 तत्व बूलियन मुखौटा बनाओ इसका उपयोग उन पंक्तियों का चयन करने के लिए किया जा सकता है जहां यह सच है, या जहां यह गलत है। दोनों मामलों में परिणाम 2 डी:
In [381]: x[rowmask,:]
Out[381]: array([[3, 4]])
In [382]: x[~rowmask,:]
Out[382]:
array([[1, 2],
[2, 3]])
यह मास्कडएरे सबक्लास का उपयोग किए बिना है। इस तरह की सरणी बनाने के लिए, हमें एक मुखौटा चाहिए जो आकार में x
से मेल खाता है। केवल एक आयाम मास्किंग के लिए प्रावधान नहीं है।, array([1, 2, 2, 3])
के बाद से मास्किंग तत्व द्वारा तत्व है, यह एक तत्व पंक्ति 1, 2 में पंक्ति 2 आदि में तो सामान्य compressing
में मुखौटा सकता है को हटाने:
In [393]: xmask=np.stack((rowmask,rowmask),-1) # column stack
In [394]: xmask
Out[394]:
array([[False, False],
[False, False],
[ True, True]], dtype=bool)
In [395]: np.ma.MaskedArray(x,xmask)
Out[395]:
masked_array(data =
[[1 2]
[2 3]
[-- --]],
mask =
[[False False]
[False False]
[ True True]],
fill_value = 999999)
कि करने के लिए compressed
लागू करना एक raveled सरणी का उत्पादन मुखौटा तत्व, एक 2 डी सरणी नहीं मिलेगा। चपटा हुआ रूप ही एकमात्र सामान्य विकल्प है।
np.ma
मास्क किए गए मानों की बिखरने पर सबसे अधिक समझ में आता है। यदि आप पूरी पंक्तियों या स्तंभों को चुनना, या अचयनित करना चाहते हैं, तो यह बहुत अधिक मूल्य नहीं है।
===============
यहाँ और अधिक विशिष्ट नकाबपोश सरणियों:
In [403]: np.ma.masked_inside(x,2,3)
Out[403]:
masked_array(data =
[[1 --]
[-- --]
[-- 4]],
mask =
[[False True]
[ True True]
[ True False]],
fill_value = 999999)
In [404]: np.ma.masked_equal(x,2)
Out[404]:
masked_array(data =
[[1 --]
[-- 3]
[3 4]],
mask =
[[False True]
[ True False]
[False False]],
fill_value = 2)
In [406]: np.ma.masked_outside(x,2,3)
Out[406]:
masked_array(data =
[[-- 2]
[2 3]
[3 --]],
mask =
[[ True False]
[False False]
[False True]],
fill_value = 999999)
आह मैं देखता हूं, तो मैं जो कोशिश कर रहा था वह काम करता है, मैं बस इसे संपीड़ित नहीं कर सकता। हम्म। सरणी की आयामी खोने के बिना सरणी के मुखौटे तत्वों को निकालने का कोई तरीका है? 'np.ma.compressed()' दोनों करता है। – Anonymous
मैं मास्क किए गए सरणी के बारे में बहुत कुछ नहीं करता, शायद आपके जैसा ही स्तर। बस इसे काम करने की कोशिश कर रहा है। खैर, यदि आप तत्वों को हटाने की कोशिश कर रहे हैं, तो मुझे लगता है कि तर्क सूचकांक खराब तरीका नहीं है। – Psidom