অনেক দিন পর আজ ফিরে এলাম পাইথন নিয়ে । নানা ব্যাস্ততার কারণে আর বেশী লেখালেখি করা হয় না । যাই হোক , আমাদের আজকের বিষয় হল পাইথনের NumPy মডিউল । এটা মূলত বিভিন্ন ম্যাথমেটিক্যাল ক্যালকুলেশন এর কাজে ব্যাবহার করা হয় । যেমন , ম্যাট্রিক্স , ভেক্টর , পলিনোমিয়াল , ইন্টিগ্রেশন , ডিফারেন্সিয়েশন প্রভৃতি ।এই মডিউলটার কাজ বুঝতে হলে আপনাদেরকে ম্যাথ সম্পর্কে হালকা পাতলা একটা ধারণা থাকতে হবে ।জটিল ম্যাখমেটিক্যাল ক্যালকুলেশন গুলো সহজে করার জন্যই এই লাইব্রেরীটা । তো আজ আমরা জাস্ট এর প্রাথমিক কয়েকটা জিনিস দেখব । তারপর আরও দুটি পর্বে আমরা এটি সর্ম্পুর্ণভাবে কমপ্লিট করব । প্রথমে মডিউলটা এখান থেকে ডাউনলোড করে ইনস্টল করুন । তারপর পাইথন ওপেন করে লিখুন
Import numpy
যদি কোন ইরর না দেখায়তাহলে বুঝতে হবে যে ভালভাবে এটা আপনার পিসিতে ইনস্টল হয়েছে ।
এবার কাজ করার পালা । এটাকে আপনারা এভাবে ইমপোর্ট করতে পারেন :
import numpy as np
তাহলে আপনাদের কাজ করতে সুবিধা হবে ।
প্রথমে আমরা দেখব কীভাবে এটাতে কোন ম্যাট্রিক্স ক্রিয়েট বা ম্যানুপিলেট করতে হয় । সবাই নিচের কোডটা লিখে ফেলুন ।
import numpy as np #একটা ১ ডাইমেনশনাল ম্যাট্রিক্স যার ডাটা টাইপ হল ফ্লোট a = np.array([1, 4, 5, 8], float) print a #ইনডেক্স ২ পর্যন্ত ডাটা নিলাম b = a[:2] #শুধুমাত্র ইনডেক্স ৩ এর ডাটা নিলাম c = a[3] #০ পজিশনে ৫ এসাইন করে দিলাম । a[0] = 5 print a,b,c
এবার এই প্রোগ্রামটা রান করে দেখুন । আউটপুট আসবে এরকম :
[ 1. 4. 5. 8.] [ 5. 4. 5. 8.] [ 5. 4.] 8.0
এবার আমরা একটু মাল্টিডাইমেনশনাল ম্যাট্রিক্স এর বিষয়ে আসি । এটা ডিক্লেয়ার করার জন্য নীচের কোডটা লিখুন :
import numpy as np #একটা ২ ডাইমেনশনাল ম্যাট্রিক্স ডিক্লেযার করলাম a = np.array([[1, 2, 3], [4, 5, 6]], float) print a #এটার মাধ্যমে ম্যাট্রিক্স এর রো কে কলাম ও কলামকে রো তে মাইগ্রেট করলাম print a.transpose() #০,০ পজিশনের এলিমেন্ট পিন্ট করলাম b = a[0,0] print b #ম্যাট্রিক্স এর ডাইমেনশন প্রিন্ট করলাম print a.shape #ম্যাট্রিক্স এর ডাটা টাইপ প্রিন্ করলাম print a.dtype #ম্যাট্রিক্স এর লেন্থ প্রিন্ট করলাম print len(a) #আগের ম্যাট্রিক্সটার সব এলিমেন্ট ০ দিয়ে ফিল বা চেঞ্জ করলাম d = a.fill(0) print d
এটা রান করলে এর আউটপুটটা এমন আসবে:
[[ 1. 2. 3.] [ 4. 5. 6.]] [[ 1. 4.] [ 2. 5.] [ 3. 6.]] 1.0 (2, 3) float64 2 None
আপনারা প্রোগ্রামটি রান করে দেখন । বিষয়টা ক্লিয়ার হবে ।
এবার আমরা ম্যাট্রিক্স এর যোগ বিয়োগ গুন ভাগ পাওয়ার এগুলো দেখব । এটা খুবই সিম্পল । আপনারা জাস্ট ভ্যারিয়েবলের মত অপারেটর ব্যাবহার করেই এই কাজটা করতে পারবেন ।
নীচের কোডটা দেখুন । এটা মূলত পাইথন কনসোলে লেখা :
>>> import numpy as np >>> a = np.array([[1, 2], [3, 4], [5, 6]], float) >>> b = np.array([-1, 3], float) >>> a+b array([[ 0., 5.], [ 2., 7.], [ 4., 9.]]) >>> a*b array([[ -1., 6.], [ -3., 12.], [ -5., 18.]]) >>> a-b array([[ 2., -1.], [ 4., 1.], [ 6., 3.]]) >>> a/b array([[-1. , 0.66666667], [-3. , 1.33333333], [-5. , 2. ]]) >>> a%b array([[ 0., 2.], [ 0., 1.], [ 0., 0.]]) >>> a**b array([[ 1.00000000e+00, 8.00000000e+00], [ 3.33333333e-01, 6.40000000e+01], [ 2.00000000e-01, 2.16000000e+02]]) >>>
আমরা জাস্ট দুটো ম্যাট্রিক্স নিয়ে তাদের মধ্যে যোগ বিয়োগ গুণ ভাগ মডুলাস ও পাওয়ার করে দিয়েছি ।অ্যারের যোগ বিয়োগ বা গুণ ভাগের ক্ষেত্রে একটা বিষয় হল , এগুলো ক্ষেত্রে এদের ডাইমেনশন একই হতে হয় । ডাইমেনশন ভিন্ন হলে ইরর দেখায় এবং তাদের মধ্যে এই অপারেশনগুলো করা যায় না । আরও্ একটা উদাহরণ দেখুন :
>>> a = np.array([1,2,3], float) >>> b = np.array([4,5], float) >>> a + b Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: shape mismatch: objects cannot be broadcast to a single shape
উপরের ম্যাট্রিক্স এর ডাইমেনশন সমান না বলে এদের মধ্যে যোগের সময় ইরর এসেছে । কিন্তু নীচের টার ক্ষেতে ডাইমেনশন ঠিক থাকায় কোন ইরর দেখায় না :
>>> a = np.array([[1, 2], [3, 4], [5, 6]], float) >>> b = np.array([-1, 3], float) >>> a array([[ 1., 2.], [ 3., 4.], [ 5., 6.]]) >>> b array([-1., 3.]) >>> a + b array([[ 0., 5.], [ 2., 7.], [ 4., 9.]])
এবার দেখুন কীভাবে এবটা ম্যাট্রিক্স এর কলামকে রো তে ও রো কে কলামে মাইগ্রেট করা যায় । সবাই নীচের কোডটা লিখুন :
import numpy as np a = np.array([[1, 2], [3, 4]], float) b = np.array([[5, 6], [7,8]], float) f = np.concatenate((a,b)) c = np.concatenate((a,b), axis=1) d = np.concatenate((a,b), axis=0) print a print b print f print c print d
দেখুন , এখানে আমরা concatenate নামের একটা ফাংশন ইউজ করে ম্যাট্রিক্স এর কলাম কে রো তে ও রো কে কলাম এ পরিণত করেছি । এখানে এক্সিস বলে দিলে সেই এক্সির এর সাপেক্ষে কলাম ও রো পরিবর্তন হয় ।
এই কাজটা আমরা নীচের মত করেও করতে পারি:
import numpy as np a = np.array([1, 2, 3], float) print a[:,np.newaxis]
এবার আমরা দেখব কীভাবে একটা ম্যাট্রিক্স এর এলিমেন্ট গুলো যোগ , গুণ , বা গড় করা যায় :
a = np.array([[2, 4, 3],[4,5,6]], float) >>> a.sum() 24.0 >>> a.prod() 2880.0 >>> a.mean() 4.0 >>> a.min() 2.0 >>> a.max() 6.0 >>>
এগুলো ছাড়াও NumPy দিয়ে অনেক কাজ করা যায় যেগুলো পরের পর্বে বলব । সেই পর্যন্ত সবাই ভাল থাকুন । সবাইকে ধন্যবাদ ।
আর পাইথনের যেকোন সমস্যার সমাধান পেতে আমাদের পাইথন বাংলা গ্রুপে জয়েন করুন ।
আমি অরিন্দম পাল। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 12 বছর 6 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 81 টি টিউন ও 316 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 20 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
মানসিক ভাবে দূর্বল । কোন কাজই কনফিডেন্টলি করতে পারি না , তবুও দেখি কাজ শেষ পর্যন্ত হয়ে যায় । নিজের সম্পর্কে এক এক সময় ধারণা এক এক রকম হয় । আমার কোন বেল ব্রেক নেই । সকালে যে কাজ করব ঠিক করি , বিকালে তা করতে পারি না । নিজের...
welcome back অনেকদিন পর আবার পেলাম ।
আশা করি চালিয়ে যাবেন ।