ন্যালি, স্কিপি বা পাইব্লব দিয়ে গল্ফ করার টিপস


10

ইতিমধ্যেই পাইথন জন্য টিপস ব্যাপক তালিকা এখানে , তাই কি আমি জিজ্ঞেস করছি পরামর্শগুলি বিশেষভাবে ব্যবহার ক্ষেত্রে প্রযোজ্য numpy, scipyবা pylabলাইব্রেরি।

এগুলি হ'ল ইতিমধ্যে ব্যবহার করা কোড সংক্ষিপ্ত করার উপায় numpyবা এই লাইব্রেরিগুলি ব্যবহার করে অজগর ক্রিয়াকলাপকে ছোট করার উপায়।

উত্তর প্রতি এক টিপস, দয়া করে।


দ্রষ্টব্য যে অবহিত সাধারণ নামস্থানে pylabমাত্র matplotlib.pyplot+ numpy। এর numpyঅংশটি এই pylabবিবেচনায় নগণ্য যে তাদের আমদানিতে একই সংখ্যক বাইট রয়েছে, সুতরাং কেবল ষড়যন্ত্রের জিনিসগুলি অতিরিক্তি থেকে আসতে পারে pylabতবে আমি সন্দেহ করি যে এটি আপনার প্রশ্নের সাথে আপনি কী মনে রেখেছিলেন তা নয়।
আন্দ্রেস ডেক

2
@ আন্দ্রেসডাইক, আমি জানি যে পাইব ব্যবহার করা খারাপ অভ্যাস হিসাবে বিবেচিত হয়, তবে কোডগল্ফের খুব কমই ভাল অনুশীলন হিসাবে বিবেচিত হতে পারে। পাইলাব সরাসরি বিভিন্ন numpyপ্যাকেজের অংশ অন্তর্ভুক্ত করে। উদাহরণস্বরূপ pylab.randintবৈধ যেখানে নাম্পির প্রয়োজন হবে numpy.random.randint। গল্ফিংয়ের জন্য তাই pylabসংক্ষিপ্ত কোড সরবরাহ করা উচিত।
ব্যবহারকারী2699

1
আমি অবগত যে অবমূল্যায়ন কোনও সমস্যা নয়, আমার বক্তব্যটি এটি কোনও সুবিধা দেয় না। আমি কেবল বুঝতে পারি নি যে সাব-প্যাকেজগুলিও এর মতো পাইলাব নেমস্পেসে লোড করা হয়েছিল! সুতরাং দুঃখিত, আপনি পুরোপুরি ঠিক বলেছেন :)
আন্দ্রেস ডেক

উত্তর:


5

নম্পির সম্প্রচারটি ব্যবহার করুন

সম্প্রচারের অর্থ অন্য অ্যারের আকারের সাথে মেলে এমন কিছু সিঙ্গলটন মাত্রা বরাবর একটি বহুমাত্রিক অ্যারের প্রতিরূপ তৈরি করা। পাটিগণিত অপারেটরগুলি প্রয়োগ করা হয় তখন এটি নম্পি অ্যারেগুলির জন্য স্বয়ংক্রিয়ভাবে ঘটে।

উদাহরণস্বরূপ, একটি 10 ​​× 10 গুণক টেবিল তৈরি করতে আপনি ব্যবহার করতে পারেন

import numpy
t=numpy.arange(1,11)
print(t*t[:,None]) # Or replace t[:,None] by [*zip(t)]

এটি অনলাইন চেষ্টা করুন!

এখানে tনম্পি অ্যারে হিসাবে তৈরি করা হয়েছে [1, 2, ..., 10]। এটির আকার (10,) রয়েছে যা সমান (1,10)। অন্যান্য অপরেন্ড অ্যারে, t[:,None]এর আকার (10,1) রয়েছে। দুটি অ্যারেকে গুণিত করে সুস্পষ্টভাবে তাদের প্রতিরূপ তৈরি করে, তাই তারা উভয়র আকার (10,10) আকার ধারণ করে beha ফলাফল, যার আকারও রয়েছে (10,10), মূল অ্যারেতে সমস্ত জোড়া এন্ট্রিগুলির জন্য পণ্যগুলি ধারণ করে।


zipএটি ব্রডকাস্টিংয়ের সাথে একটি চৌকস ব্যবহার ছিল , এটি নিজের উত্তরটিতে আসবে?
ব্যবহারকারী2699

@ ব্যবহারকারী2699 আমি মনে করি এটি পৃথক উত্তর হিসাবে মূল্যবান নয়, কারণ আরও বোধনযোগ্য পাঠ্য [*zip(t)]হিসাবে বাইট গণনা রয়েছে t[:,None]। তবে আপনি ঠিক বলেছেন, এটি লক্ষ্য করার মতো হতে পারে, তাই আমি এটি এখানে আবার যুক্ত করেছি
লুইস মেন্ডো

ভাল কথা, আমি অনুমান করি আমি আসলে বাইটগুলি গণনা করি নি। [*zip(t)]আরও মাত্রা থাকলে দুটি বাইট সংক্ষিপ্ত হবে।
ব্যবহারকারী2699

1
নোট করুন যে প্রসারিত পুনরাবৃত্তিযোগ্য আনপ্যাকিং এ [*zip(t)]কেবল অজগর 3 এ কাজ করবে
আন্দ্রেস ডেক

আমি এই পৃষ্ঠাটি দেখেছি যেমন পার্ল 6 এর মধ্যে ন্যাম্পির কী আছে তা খুঁজে পেতে আগ্রহী। যাইহোক যে হিসাবে লেখা হবে my \t = 1..10; .fmt('%3d').put for t «*» t[*,Empty]বা আপনি ব্যবহার করতে পারেনzip(t)
ব্র্যাড গিলবার্ট b2gills

2

ব্যাপ্তি (...) এর পরিবর্তে r _ [...] ব্যবহার করুন

নম্পি ব্যবহার করে অ্যারে তৈরির জন্য সিনট্যাক্সের মত মতলব সরবরাহ করে r_[...]। বন্ধনীগুলির মধ্যে যে কোনও স্লাইস নোটেশন নির্দেশিত ব্যাপ্তির সাথে অ্যারে হিসাবে ব্যাখ্যা করা হয়। সুতরাং, উদাহরণস্বরূপ

r_[:30:4]

সমতুল্য

arange(0,30,4)

এবং বেশিরভাগ ব্যবহারের জন্য প্রতিস্থাপন করতে পারেন

range(0,30 4)

এটি আরও জটিল অভিব্যক্তি পরিচালনা করতে পারে। উদাহরণস্বরূপ 0 থেকে 10 অবধি এবং আবার নীচে ফিরে সূচকগুলি পেতে,

r_[:10,10:-1:-1]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.