মজার ও সহজ প্রোগ্রামিং, পাইথন প্রোগ্রামিং [পর্ব-৩০] :: পাইথনে সহজে জটিল ম্যাথমেটিক্যাল অপারেশন সলভ করা(Numpy – 1)

অনেক দিন পর আজ ফিরে এলাম পাইথন নিয়ে । নানা ব্যাস্ততার কারণে আর বেশী লেখালেখি করা হয় না  । যাই হোক , আমাদের আজকের বিষয় হল পাইথনের 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  দিয়ে অনেক কাজ করা যায় যেগুলো পরের পর্বে বলব । সেই পর্যন্ত সবাই ভাল থাকুন । সবাইকে ধন্যবাদ ।

আর পাইথনের যেকোন সমস্যার সমাধান পেতে আমাদের পাইথন বাংলা গ্রুপে জয়েন করুন ।

Level 2

আমি অরিন্দম পাল। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 12 বছর 7 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 81 টি টিউন ও 316 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 20 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।

মানসিক ভাবে দূর্বল । কোন কাজই কনফিডেন্টলি করতে পারি না , তবুও দেখি কাজ শেষ পর্যন্ত হয়ে যায় । নিজের সম্পর্কে এক এক সময় ধারণা এক এক রকম হয় । আমার কোন বেল ব্রেক নেই । সকালে যে কাজ করব ঠিক করি , বিকালে তা করতে পারি না । নিজের...


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস

welcome back অনেকদিন পর আবার পেলাম ।
আশা করি চালিয়ে যাবেন ।

Level 2

আপনার এই টিউনটি পরে অনেক ভালো লাগলো। টিউনটি এত সুন্দরভাবে উপস্থাপন করার জন্য আপনাকে অনেক ধন্যবাদ। আশাকরি পরবর্তীতে আরো সুন্দর টিউন উপহার দিবেন।https://bestsocialplan.com

অনেকদিন পর আসলেন ! খুব ভাল লাগল আপনার টিউন পেয়ে ! 🙂

    @Ashikur Rahman Tomal: ধন্যবাদ ভাই । আশা করছি এখন থেকে আবার পাবেন ……