में एक आइटम को छोड़कर किसी सूची के सभी तत्वों (या सरणी, या जो कुछ भी) को किसी विशेष इंडेक्स के लिए को छोड़कर कोई आसान तरीका है? जैसे,इंडेक्स सभी * पाइथन
mylist[3]
स्थिति में आइटम वापस आ जाएगी 3milist[~3]
को छोड़कर के लिए 3
में एक आइटम को छोड़कर किसी सूची के सभी तत्वों (या सरणी, या जो कुछ भी) को किसी विशेष इंडेक्स के लिए को छोड़कर कोई आसान तरीका है? जैसे,इंडेक्स सभी * पाइथन
mylist[3]
स्थिति में आइटम वापस आ जाएगी 3
milist[~3]
को छोड़कर के लिए 3
में सोच सकते हैं एक सूची के लिए, आप एक सूची कंप का उपयोग कर सकते हैं। उदाहरण के लिए, 3 तत्व के बिना b
a
की एक प्रतिलिपि बनाने के लिए:
a = range(10)[::-1] # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
b = [x for i,x in enumerate(a) if i!=3] # [9, 8, 7, 5, 4, 3, 2, 1, 0]
यह बहुत सामान्य है, और NumPy सरणी सहित सभी iterables, के साथ प्रयोग किया जा सकता है। यदि आप ()
के साथ प्रतिस्थापित करते हैं, तो b
किसी सूची के बजाय एक पुनरावर्तक होगा।
या आप pop
साथ यथा-स्थान ऐसा कर सकता है:
a = np.arange(9, -1, -1) # a = array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
b = a[np.arange(len(a))!=3] # b = array([9, 8, 7, 5, 4, 3, 2, 1, 0])
, सामान्य रूप में, बहुत हो जाएगा जो:
a = range(10)[::-1] # a = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
a.pop(3) # a = [9, 8, 7, 5, 4, 3, 2, 1, 0]
numpy में आप एक बूलियन अनुक्रमण के साथ ऐसा कर सकता है ऊपर सूचीबद्ध सूची समझ से तेज़।
>>> l = range(1,10)
>>> l
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> l[:2]
[1, 2]
>>> l[3:]
[4, 5, 6, 7, 8, 9]
>>> l[:2] + l[3:]
[1, 2, 4, 5, 6, 7, 8, 9]
>>>
भी देखें
आप numpy का उपयोग कर रहे हैं, तो सबसे करीब है, मैं है का एक मुखौटा
>>> import numpy as np
>>> arr = np.arange(1,10)
>>> mask = np.ones(arr.shape,dtype=bool)
>>> mask[5]=0
>>> arr[mask]
array([1, 2, 3, 4, 5, 7, 8, 9])
कुछ समान itertools
का उपयोग कर प्राप्त किया जा सकता का उपयोग किए बिना numpy
>>> from itertools import compress
>>> arr = range(1,10)
>>> mask = [1]*len(arr)
>>> mask[5]=0
>>> list(compress(arr,mask))
[1, 2, 3, 4, 5, 7, 8, 9]
मैं कुछ np.arange (len (arr)) का उपयोग कर सकता हूं! = 3' मास्क के रूप में, क्योंकि तब इसे रेखांकित किया जा सकता है, उदा। 'arr [~ (np.arange (लेन (एआर)) == 3)] 'या जो भी हो। – DSM
@DSM: कृपया इसे उत्तर के रूप में पोस्ट करें :-)। कोई भी मामला, मैं नम्पी के साथ काफी समझदार नहीं हूं। एक सूची के मामले में, एक सरणी मास्किंग के लिए – Abhijit
+1, मैं स्लाइस के साथ जाना होगा और संपीड़न का उपयोग कर concatenate। –
सबसे आसान तरीका मैंने पाया था:
mylist[:x]+mylist[x+1:]
कि उत्पादन करेगा आपके mylist
सूचकांक x
पर तत्व के बिना।
मैंने पाया कि यह वास्तव में आइटम x + 1 को हटा देता है, फिर भी उपयोगी है, धन्यवाद –
आपको याद रखना चाहिए कि सूचकांक 0-आधारित है, इसलिए यह ठीक काम करता है। –
आह हाँ, बस इसे पुनः प्रयास किया और यह सही है। +1 –
आप सूचकांक पहले से यहाँ नहीं जानते कि एक समारोह है कि एक सूची के लिए
def reverse_index(l, index):
try:
l.pop(index)
return l
except IndexError:
return False
अच्छा जवाब काम करेगा। आप इसे सरणी के लिए भी इस्तेमाल कर सकते हैं लेकिन आपको 'numpy.concatenate' का उपयोग करने की आवश्यकता होगी। –
कूल जवाब !!!! – kingmakerking