यह (लगभग?) शुद्ध numpy
में मुखौटा सरणी और घुमावदार चाल का उपयोग कर किया जा सकता है।
>>> indices = numpy.arange(a.size)
>>> mask = ~((indices >= start[:,None]) & (indices < end[:,None]))
या अधिक बस:
>>> mask = (indices < start[:,None]) | (indices >= end[:,None])
मुखौटा False
(यानी मूल्यों नकाबपोश नहीं) है उन सूचियों के शुरू होने से मूल्य को >=
और <
अंत मान रहे हैं के लिए सबसे पहले, हम हमारे मुखौटा बनाने । (None
के साथ स्लाइसिंग (उर्फ numpy.newaxis
) प्रसारण को सक्षम करने वाला एक नया आयाम जोड़ता है।) अब हमारे मुखौटा इस तरह दिखता है:
>>> mask
array([[ True, False, True, True, True, True, True, True, True,
True, True, True],
[ True, True, True, True, True, False, False, False, False,
False, True, True],
[ True, True, True, True, True, True, True, False, False,
True, True, True]], dtype=bool)
अब हम सरणी फैलाने के लिए stride_tricks
का उपयोग कर मुखौटा फिट करने के लिए है:
>>> as_strided = numpy.lib.stride_tricks.as_strided
>>> strided = as_strided(a, mask.shape, (0, a.strides[0]))
>>> strided
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]], dtype=int16)
यह एक 3x12 सरणी की तरह दिखता है, लेकिन एक ही में प्रत्येक पंक्ति अंक याद। अब हम उन्हें एक नकाबपोश सरणी में गठजोड़ कर सकते हैं:
>>> numpy.ma.array(strided, mask=mask)
masked_array(data =
[[-- 1 -- -- -- -- -- -- -- -- -- --]
[-- -- -- -- -- 5 6 7 8 9 -- --]
[-- -- -- -- -- -- -- 7 8 -- -- --]],
mask =
[[ True False True True True True True True True True True True]
[ True True True True True False False False False False True True]
[ True True True True True True True False False True True True]],
fill_value = 999999)
यह आप के लिए क्या पूछा के रूप में काफी समान नहीं है, लेकिन यह इसी तरह से व्यवहार करना चाहिए।
मैं यह समझने क्या 'start' और' end' है हो रही है इसके साथ करने के लिए। एक तरफ के रूप में, मुझे नहीं लगता कि आप इसे पूरी तरह से खराब में करने में सक्षम होंगे क्योंकि numpy arrays आयताकार होने की आवश्यकता है। – mgilson
YOu स्टार्ट-एंड मानों को सूची में टुपल्स के रूप में बनाने का प्रयास कर सकता है। – Keith
जैसा कि आपको कोई विचारधारात्मक समाधान नहीं लगता है, यदि आपको अधिक विचारों की आवश्यकता है, तो हो सकता है कि आप शायद बाद में इसके साथ क्या करें और स्लाइस में कुछ विशेष गुण हों। – seberg