একটি নিম্পী অ্যারে প্রতি নবম এন্ট্রি সাবমলিং


96

আমি নিম্পির সাথে এক শিক্ষানবিস এবং আমি দীর্ঘ নিমপী অ্যারে থেকে কিছু ডেটা বের করার চেষ্টা করছি। আমাকে যা করতে হবে তা হ'ল আমার অ্যারেতে একটি সংজ্ঞায়িত অবস্থান থেকে শুরু করা এবং তারপরে আমার অ্যারের শেষ হওয়া অবধি সেই অবস্থান থেকে প্রতি নবম ডেটা পয়েন্ট সাবমেল করুন।

মূলত যদি আমার ছিল

a = [1,2,3,4,1,2,3,4,1,2,3,4....] 

আমি এটি শুরু করতে a[1]এবং তারপরে সেখান থেকে প্রতি চতুর্থ বিন্দুতে নমুনা তৈরি করতে চাই, এর মতো কিছু উত্পাদন করতে চাই

b = [2,2,2.....]

উত্তর:


163

আপনি সরলভাবে , নমপির কাটা ব্যবহার করতে পারেন start:stop:step

>>> xs
array([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4])
>>> xs[1::4]
array([2, 2, 2])

এটি আসল তথ্যগুলির একটি দর্শন তৈরি করে, তাই এটি ধ্রুবক সময় । এটি আসল অ্যারেতে পরিবর্তনগুলিও প্রতিবিম্বিত করবে এবং পুরো আসল অ্যারেটিকে স্মৃতিতে রাখবে:

>>> a
array([1, 2, 3, 4, 5])
>>> b = a[::2]         # O(1), constant time
>>> b[:] = 0           # modifying the view changes original array
>>> a                  # original array is modified
array([0, 2, 0, 4, 0])

সুতরাং উপরের যে কোনও একটি বিষয় যদি সমস্যা হয় তবে আপনি স্পষ্টভাবে একটি অনুলিপি তৈরি করতে পারেন:

>>> a
array([1, 2, 3, 4, 5])
>>> b = a[::2].copy()  # explicit copy, O(n)
>>> b[:] = 0           # modifying the copy
>>> a                  # original is intact
array([1, 2, 3, 4, 5])

এটি স্থির সময় নয়, তবে ফলাফলটি মূল অ্যারের সাথে আবদ্ধ নয়। অনুলিপিটি মেমরির সাথেও সামঞ্জস্যপূর্ণ, যা এটির উপর দ্রুত কিছু পরিচালনা করতে পারে।


4
রেফারেন্স / মান কপি সম্পর্কে সতর্ক করার জন্য আপনাকে ধন্যবাদ। আমি অন্যথায় অবশ্যই ফাঁদে পড়ে
যাব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.