python - Array slicing: access first two elements in reverse order running for loop -
मान लीजिए मेरे पास 1D की लंबाई 10 है:
ए = एनपी.रेंज (10 ) मैं एक समय में 2 तत्वों का उपयोग करना चाहता हूं और उन्हें उलटा देना चाहता हूं। इसके बाद ए यह दिखाई देगा:
np.array ([1,0,3,2,5,4,7,6,9,8])प्री>मैं इसे लूप के लिए कर रहा हूं:
में श्रेणी के लिए (5): ए [2 * i: 2 * i + 2] = ए [2 * i + 1 : 2 * i-1: -1]यह समाधान I! = 0 के लिए काम करता है। क्या मैं सभी तत्वों के लिए वांछित उत्पादन प्राप्त करना संभव है, बिना किसी विशेष मामले के लिए?
* मैं एक उदाहरण के रूप में 1 डी का इस्तेमाल किया। मेरी वास्तविक सरणी 2 डी है, y और x के रूप में पंक्तियों के रूप में निर्देशांक Cv2.fitEllipse और cv.drawContours को सरणी की आवश्यकता होती है जहां x और y कॉलम हैं ((2, एन) -> (एन, 1,2))। मुझे अपने सरणी के आकार को बदलना होगा और ऑर्डर रद्द करना होगा (और मैं इसे 1 संचालन में करना चाहता हूं)।
आप ऐसा कुछ कर सकते हैं:
& gt; & gt; & gt; Arr = np.arange (10) & gt; & gt; & gt; Arr.reshape (arr.size / 2, 2) [:, :: - 1]। फ्लैटन () सरणी ([1, 0, 3, 2, 5, 4, 7, 6, 9, 8]) इन-प्लेस संशोधनों के लिए:
& gt; & gt; & gt; Arr = np.arange (10) & gt; & gt; & gt; Arr [:: 2], arr [1 :: 2] = arr [1 :: 2], arr [:: 2] .copy ()>> gt; & gt; & gt; एआर सरणी ([1, 0, 3, 2, 5, 4, 7, 6, 9, 8])
कॉलिंग .copy () आवश्यक है क्योंकि जब तक पायथन arr [1 :: 2] पर arr पर वस्तुओं <[2 2] पर पहले से संशोधित हैं,
पर पहुंच जाएगा।
Comments
Post a Comment