নিউমেরিক্যাল নামপাই (Numerical Numpy) সংক্ষেপে নামপাই (NumPy) নামে পরিচিত। পাইথনের অসংখ্য লাইব্রেরির মধ্যে NumPy এর ব্যবহার উল্লেখযোগ্য এবং এটি বিভিন্ন ধরনের নিউমেরিক্যাল ও সাইন্টিফিক কম্পিউটিং এর জন্য বহুল ব্যবহৃত একটি লাইব্রেরি। মাল্টি ডাইমেনশনাল (Multi-dimensional) অ্যারে নিয়ে কাজ করার জন্য এর জুড়ি মেলা ভার। প্রথমেই দেখে নিই কিভাবে আমরা নামপাই ইনস্টল করতে পারি-
নামপাই ইনস্টল করা (Installing NumPy)
সিস্টেম এ NumPy ইনস্টল করা খুবই সহজ। যদি আপনার কম্পিউটারটিতে ইন্টারনেট সংযোগ থাকে তাহলে খুব সহজেই নিচের pip কমান্ড ব্যবহার করে ইনস্টল করে নিতে পারেন।
pip install numpy
আপনি যদি কমান্ড লাইন ব্যবহার করেন তাহলে Python টার্মিনালটি ওপেন করে এই কমান্ডটি লিখলেই দেখতে পাবেন যে NumPy ইনস্টল হয়ে যাচ্ছে। যদি আপনি সবকিছু ঠিকমত করতে পারেন তাহলে নিচের মত একটি লেখা দেখতে পাবেন-
উপরের কমান্ডটি রান করলে সর্বশেষ ভার্শনটি ইনস্টল হবে। আপনি যদি নির্দিষ্ট কোন ভার্শন ইনস্টল করতে চান তাহলে সেই ভার্শনের নাম্বারটি দিয়ে দিতে পারেন। তবে সবসময় হালনাগাদ ভার্শনটি ব্যবহার করাই ভাল। ধরা যাক আপনি NumPy এর ১.২৬.০ ভার্শনটি ইনস্টল করতে চান, সেক্ষত্রে pip কমান্ডটি হবে –
pip install numpy==1.26.0
pip কি?
এতক্ষণে হয়ত আপনার মাথায় প্রশ্ন চলে এসেছে এই pip এর অর্থ কি? pip হচ্ছে পাইথনের প্যাকেজ ম্যানেজার। যে প্যাকেজগুলো পাইথনের সাথে ডিফল্টভাবে আসেনা সেগুলো সাধারণত pip কমান্ড দিয়ে ইনস্টল দেওয়া যায়। এই প্যাকেজের মধ্যেই কোন একটি মডিউল সফলভাবে কাজ করার জন্য যে ফাইলের প্রয়োজন হয় সেগুলো একসাথে থাকে এবং এগুলো সাধারণত https://pypi.org/ ওয়েবসাইটে ইনডেক্স করা থাকে। PyPI হচ্ছে Python Package Index এর সংক্ষিপ্ত রুপ। যেকোন প্যাকেজ বা মডিউল এর জন্য উক্ত সাইটে গিয়ে খুজলে সহজেই পাওয়া যায়।
কোন প্যাকেজ ইনস্টল করার জন্য সাধারণ নিয়ম হচ্ছে –
pip install package_name
আর আনইনস্টল করার জন্য –
pip uninstall package_name
IDE ব্যবহার করে NumPy ইনস্টল করা
এছাড়া আপনি যদি যেকোন IDE (যেমন PyCharm, Spyder) ব্যবহার করে থাকেন তাহলে যেকোন একটা উইন্ডোতে IPython Console খুজে পাবেন। সেখানে উপরোক্ত কোডটি লিখে রান করালেই NumPy ইনস্টল হয়ে যাবে। নিচে সচিত্র বর্ণনা করা হল-
নামপাই অ্যারে (NumPy Array)
নামপাই এ ডাটাগুলো একটা অ্যারের মত সজ্জিত থাকে। প্রথমেই আমরা দেখে নেব কিভাবে একটি অ্যারে তৈর করতে হয় –
import numpy as np #importing numpy
np_array=np.array([1,2,3]) #creating a numpy array
print(np_array)
ফলাফল –
[1 2 3]
প্রথম লাইনে আমরা NumPy কে np উপনামে ইমপোর্ট করেছি। ৩য় লাইনে একটি নামপাই অ্যারে তৈরি করার জন্য np.array(([1,2,3])) ব্যবহার করা হয়েছে। এখানে 1,2, এবং 3 হচ্ছে এই অ্যারের উপাদান যেটা np_array নামক ভেরিয়েবল এ রাখা হয়েছে। print() ফাংশন ব্যবহার করে অ্যারের উপাদানগুলোকে আউটপুট এ প্রদর্শন করা হয়েছে।
নোটঃ এখানে প্রশ্ন আসতে পারে আমরা কেন np ব্যবহার করলাম? ইমপোর্ট করার সময় যে উপনাম (Alias) ব্যবহার করতেই হবে এমন কোন বাধ্যবাধকতা নেই। প্রোগ্রামের সুবিধার্থে বার বার কোন মডিউল কে সম্পূর্ণ নামে না লিখে উপনাম এ লিখলে কোড লিখতে একটু সুবিধা হয় এবং দেখতেও জগাখিচুড়ি লাগে না। আমরা যদি np ব্যবহার না করতাম তাহলে ৩য় লাইনে numpy.array([1,2,3]) এইভাবে লিখতে হত।
উপরে আমরা যে উদাহরণটি দেখলাম এটা একটি একমাত্রিক (one dimensional বা 1D) অ্যারে।
লিস্ট এবং টাপল কে নামপাই ভেরিয়েবলে রুপান্তর
পূর্বের অধ্যায়গুলোতে আমরা পাইথনের বিভিন্ন ডাটাস্ট্রাকচার যেমন লিস্ট এবং টাপল সম্পর্কে জেনেছি। এগুলোকে খুব সহজেই নামপাই ভেরিয়েবল এ রুপান্তর করা যায়। এজন্য উপরের উদাহরণের মত কোন ফিক্সড নাম্বার না দিয়ে ভেরিয়েবলের নাম দিলেই রুপান্তর হয়ে যায়।
import numpy as np
a=[10,20,40] #Declaring a list.
np_array_list=np.array(a)
b=(30,50,70) #Declaring a touple.
np_array_tuple=np.array(b)
print("The value of a is {} and type {}".format(a,type(a)))
print("The value of np_array is {} and type {}".format(np_array_list,type(np_array_list)))
print("The value of b is {} and type {}".format(b,type(b)))
print("The value of np_array is {} and type {}".format(np_array_tuple,type(np_array_tuple)))
ফলাফল-
The value of a is [10, 20, 40] and type <class 'list'>
The value of np_array is [10 20 40] and type <class 'numpy.ndarray'>
The value of b is (30, 50, 70) and type <class 'tuple'>
The value of np_array is [30 50 70] and type <class 'numpy.ndarray'>
দ্বিমাত্রিক অ্যারে (Two Dimensional বা 2D)
2D অ্যারে তে উপাদানগুলো x অক্ষ এবং y অক্ষ বরাবর সজ্জিত থাকে। এখানে আমরা একটা উদাহরণ দেখে নেই-
import numpy as np #importing numpy
array_2D=np.array([[1,2,3],[4,5,6]]) #creating a 2D numpy array
print(array_2D)
ফলাফল-
[[1 2 3]
[4 5 6]]
ফলাফল হিসাবে আমরা একটি দ্বিমাত্রিক অ্যারে দেখতে পাচ্ছি।
নোটঃ 2D অ্যারে দিয়ে চাইলে কোন বাইনারি ইমেজ কে প্রকাশ করা যায়। অর্থাৎ কোন সাদা কালো ছবিকে NumPy এর 2D অ্যারে দিয়ে প্রকাশ করা যায়।
ত্রিমাত্রিক অ্যারে (Three Dimensional বা 3D)
আপনারা হয়ত এতক্ষণে বুঝে গেছেন যে 3D অ্যারে তে উপাদানগুলো x, y, এবং z অক্ষ বরাবর সজ্জিত থাকবে। একটি উদাহরণ দেখে নেই-
import numpy as np #importing numpy
array_3D=np.array([[1,2,3],[4,5,6],[7,8,9]]) #creating a 3D numpy array
print(array_3D)
ফলাফল –
[[1 2 3]
[4 5 6]
[7 8 9]]
এখানে একটি ত্রিমাত্রিক অ্যারে তৈরি হয়েছে।
জটিল ত্রিমাত্রিক কোন অবজেক্টকে প্রকাশ করা জন্য 3D অ্যারে ব্যবহার করা হয়।
n-মাত্রিক অ্যারে (n dimensional বা n-D)
আমাদের চোখের সীমাবদ্ধতার জন্য আমরা সর্বোচ্চ 3D বস্তু দেখতে পাই। এর চেয়ে বেশি মাত্রার বস্তু দেখতে পাই না (বিজ্ঞানীরা গবেষণা করে বের করেছেন ৪ মাত্রার বস্তু দেখতে কেমন হবে এবং এর নাম দিয়েছেন Tesseract)। তবে প্রোগ্রামিং এ মাত্রাকে n সংখ্যকভাবে বর্ধিত করা যায়।
সাধারণত যখন মেশিন লার্নিং বা ডিপ লার্নিং এর মডেল নিয়ে কাজ করা হয় তখন সেখানে বিলিয়ন বিলিয়ন প্যারামিটার থাকে, আর এই প্যারামিটার গুলোকে রাখার জন্য n-D অ্যারে ব্যবহার করা হয়।
অ্যারের নির্দিষ্ট কোন উপাদানকে অ্যাক্সেস (Access) করা
নামপাই অ্যারের কোন নির্দিষ্ট উপাদানকে অ্যাক্সেস করতে সেই অ্যারের ইনডেক্স (index) ব্যবহার করা হয়। অ্যারের উপাদানগুলো যে ক্রমে সাজানো থাকে সেটাই ইনডেক্সিং, উল্লেখ্য ইনডেক্স এর শুরু হয় 0 দিয়ে। একটি উদাহরণের সাহায্যে দেখে নেই –
import numpy as np #importing numpy
np_array=np.array([1,2,3]) #creating a numpy array
print(np_array)
np_array[0]=9 #Modifying the first element
print(np_array)
array_2D=np.array([[1,2,3],[4,5,6]]) #creating a 2D numpy array
print(array_2D[1][2])
ফলাফল-
[1 2 3]
[9 2 3]
6
এখানে ৬ষ্ঠ লাইনে np_array এর প্রথম উপাদানকে পরিবর্তন করা হয়েছে। যার ফলে ৭ম লাইনে যখন আবার অ্যারে টিকে প্রিন্ট দেওয়া হয়েছে তখন এটার ভ্যালু [9 2 3] দেখিয়েছে। একইভাবে ৯ম লাইনে একটি দ্বিমাত্রিক অ্যারের ভ্যালু পরিবর্তন করে দেখানো হয়েছে।
নামপাই ডাটা টাইপ (NumPy data type)
নামপাই এ পাইথনের ডিফল্ট ডাটা টাইপের চেয়ে কিছু অতিরিক্ত ডাটা টাইপ আছে এবং এগুলোকে ঐ নির্দিষ্ট টাইপের নামের প্রথম অক্ষর দিয়ে প্রকাশ করা হয়, যেমন boolean কে b, integer কে i, float কে f দিয়ে প্রকাশ করা হয়, ইত্যাদি ।
মূলত কম্পিউটার এর মেমরি কে আরো দক্ষ ও কার্যকর ভাবে ব্যবহার করার জন্যই এসব নতুন ডাটা টাইপের আবির্ভাব। ধরা যাক আমরা খুব ছোট কোন সংখ্যাকে রাখতে চাই সেক্ষেত্রে int2 (২ বাইট =১৬ বিট), আবার বড় সংখ্যার ক্ষেত্রে int8(৮ বাইট=৬৪ বিট) রাখতে পারি। ছোট খাট প্রোগ্রামের ক্ষেত্রে এগুলো কোন বড় বিষয় না, কিন্তু যখন মেশিন লার্নিং বা ডিপ লার্নিং এর লাখ লাখ ডাটা নিয়ে কাজ করা হবে তখন এক বাইট ডাটাও অনেক বড় ব্যবধান তৈরি করতে পারে।
নোটঃ সংখ্যা সম্বলিত ডাটা টাইপ এর জন্য আনসাইন্ড (unsigned) – u ব্যবহার করা যায়। আনসাইন্ড ব্যবহার করলে কোন ঋণাত্বক মানের ভ্যালু রাখা যাবে না।
নির্দিষ্ট ডাটা টাইপের অ্যারে তৈরি
আমরা চাইলে একটি ভেরিয়েবল তৈরি করার সময়ই সেটাকে নির্দিষ্ট করে দিতে পারি। সেমন-
import numpy as np
np_array = np.array([1, 2, 3], dtype='f')
print(np_array)
print(np_array.dtype)
ফলাফল-
[1. 2. 3.]
float32
৩য় লাইনে যদিও পূর্ণসংখ্যা 1, 2, 3 ছিল dtype=’f’ ব্যবহার করার কারণে সেটা 1. 2. 3. অর্থাৎ float বা ভগ্নাংশ হয়ে গেছে।
নামপাই অ্যারে অপারেশন (Array operation)
নামপাই এ কিছু বিল্টইন মেথড আছে যেগুলো দিয়ে খুব সহজেই অনেক জটিল সমস্যার সমাধান করা যায়। এর মধ্যে সবচেয়ে বেশি ব্যবহৃত কিছু মেথড এর কাজ উদাহরণসহ দেখে নেব।
অ্যারে থেকে নির্দিষ্ট অংশ কেটে নেওয়া
কোন একটি বৃহৎ অ্যারে থেকে কোলন (:) অপারেটর ব্যবহার করে খুব সহজেই নির্দিষ্ট কোন অংশকে কেটে নেওয়া যায়। এই অপারেশনটি খুবই সহজ এবং কার্যকরি, বিশেষ করে এআই এর ডাটা প্রি-প্রসেসিং (pre-processing) এর সময় এর ব্যবহার অনস্বীকার্য। এটার গঠন হবে এমন – [শুরুঃশেষঃব্যবধান] একটি উদাহরণ দিয়ে শুরু করি-
import numpy as np
np_array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
print(np_array[2:4]) #slicing elements from index 2 to 4
print(np_array[:4]) #slicing all elements from start to index 4
print(np_array[2:]) #slicing all elements from index 2 to end
print(np_array[2:9:2]) #slicing elements from index 2 to 9 with interval 2
ফলাফল-
[3 4]
[1 2 3 4]
[3 4 5 6 7 8 9]
[3 5 7 9]
৫ম লাইনে 2:4 দিয়ে ইনডেক্স ২ থেকে ৪ এর উপাদানগুলোকে বোঝানো হয়েছে।
৭ম লাইনে :4 দেওয়া হয়েছে এবং এর আগে কোন সংখ্যা দেওয়া হয়নি, যার অর্থ দাঁড়ায় ইনডেক্স ৪ এর আগের সমস্ত উপাদান।
৯ম লাইনে 2: দেওয়া হয়েছে এবং এর পরে কোন সংখ্যা দেওয়া হয়নি, যার অর্থ দাঁড়ায় ইনডেক্স ২ এর পরের সমস্ত উপাদান।
১১শ লাইনে 2:9:2 ব্যবহার করার মাধ্যমে বোঝানে হয়েছে যে ২ থেকে ৯ ইনডেক্স এর সকল উপাদান ২ টা পর পর নিবে।
সবগুলোকে ভালভাবে বোঝার জন্য উদাহরণ এর সাথে মিলিয়ে নিই।
অ্যারের মাত্রা রুপান্তর (Array dimension change)
নামপাই এ অ্যারে এক মাত্রা থেকে অন্য মাত্রায় রুপান্তর করার জন্য reshape() মেথড ব্যবহার করতে হয়। বোঝার সুবিধার্থে আমরা একটি 1D অ্যারে কে 2D অ্যারে তে রুপান্তর করে দেখব-
import numpy as np
np_array = np.array([1, 2, 3, 4, 5, 6, 7, 8]) #1D array
np_array_new = np_array.reshape(2, 4) #2D array
print(np_array_new.shape)
print(np_array_new)
ফলাফল-
(2, 4)
[[1 2 3 4]
[5 6 7 8]]
৫ম লাইনে .reshape(2,4) দিয়ে 1D অ্যারে কে 2D অ্যারে তে রুপান্তর করা হয়েছে যেটার ২ টি সারি (row) এবং ৪ টি স্তম্ভ (column) রয়েছে। যাদের ম্যাট্রিক্স সম্পর্কে ভাল ধারণা আছে তারা খুব সহজেই বুঝতে পারবেন।
৭ম লাইনে .shape ব্যবহার করে রুপান্তরিত অ্যারের আকৃতি প্রিন্ট করা হয়েছে।
শর্তঃ এক মাত্রা থেকে অন্য মাত্রায় রুপান্তর করতে হলে অবশ্যই এদের উপাদান সংখ্যা সমান হবে। উপরের উদাহরণ এ যদি আমরা (3,3) দিতাম তাহলে একটি এরর আসতে; কারণ, এখানে যে অ্যারে টা আছে সেটাতে ৮ টি উপাদান আছে কিন্তু আমাদের কাঙ্খিত অ্যারে তে উপাদান সংখ্যা হয়ে যাচ্ছে ৯ (৩x৩)।
অ্যারে সংযুক্তি এবং আলাদা করা
একাধিক নামপাই অ্যারে একটির সাথে আর একটিকে সংযুক্ত করতে দুইটি ফাংশন ব্যবহার করা হয় – concatenate() এবং stack(), এখানে একটি উদাহরণ দেখে নিই-
import numpy as np
array1_2D = np.array([[1, 2], [3, 4]])
array2_2D = np.array([[5, 6], [7, 8]])
new_array = np.concatenate((array1_2D, array2_2D), axis=0)
new_array2 = np.concatenate((array1_2D, array2_2D), axis=0)
print(new_array)
ফলাফল-
[[1 2]
[3 4]
[5 6]
[7 8]]
[[1 2]
[3 4]
[5 6]
[7 8]]
৭ম লাইনে concatenate() ফাংশন ব্যবহার করে আমরা একটি 2D নামপাই অ্যারে কে জোড়া লাগিয়েছি। এখানে axis নামে আর একটি গুরুত্বপূর্ণ প্যারামিটার দেখতে পাচ্ছি যেটার মান দেওয়া হয়েছে 0, মূলত এটা দিয়ে বোঝানো হয়েছে অ্যারে টা সারি বরাবর নাকি স্তম্ভ বরাবর সংযুক্ত হবে। মান 0 বলতে সারি বরাবর এবং 1 বলতে স্তম্ভ বরাবর সংযুক্ত হওয়াকে বোঝায়।
concatenate() এবং stack() প্রায় একই ধরনের কাজ করে। এখানে একটাই পার্থক্য আছে সেটা হল concatenate() কোন একটি নামপাই অ্যারের সারি বা স্তম্ভ তে অন্য একটি অ্যারে কে যুক্ত করে, অন্যদিকে stack() একটি নতুন অক্ষ বরাবর অর্থাৎ একটার পর একটা অ্যারে সংযুক্ত করে। নিচের উদাহরণটি দেখে নিই-
import numpy as np
array1_2D = np.array([[1, 2], [3, 4]])
array2_2D = np.array([[5, 6], [7, 8]])
new_array = np.stack((array1_2D, array2_2D),axis=0)
print(new_array)
ফলাফল-
[[[1 2]
[3 4]]
[[5 6]
[7 8]]]
৭ম লাইনে stack() ফাংশনটি ব্যবহার করা হয়েছে। ফলাফল এর দিকে লক্ষ্য করলেই বুঝতে পারছেন এখানে মূল পার্থক্য টা কি। stack() এর জন্য আরো দুইটি ফাংশন আছে – hstack() এবং vstack(), এগুলো প্রায় concatenate() ফাংশন এর axis এর মতই কাজ করে।
একটি অ্যারেকে অন্য একাধিক অ্যারে তে ভাগ করার জন্য array_split() ফাংশনটি ব্যবহার করা হয়। একটি উদাহরণ দেখে নিই-
import numpy as np
np_array = np.array([1, 2, 3, 4])
new_array = np.array_split(np_array, 2)
print(new_array)
print("Accessing array using index: ",new_array[0])
ফলাফল-
[array([1, 2]), array([3, 4])]
Accessing array using index: [1 2]
৫ম লাইনে আমরা একটি অ্যারে কে দুইটি অ্যারেতে ভাগ করেছি। কোন একটি অ্যারে কে সহজেই index দিয়ে অ্যাক্সেস করা যায় যেটা ৯ম লাইনে দেখানো হয়েছে।
লুপ (loop)
নামপাই অ্যারের প্রতিটি উপদানকে অ্যাক্সেস করার জন্য লুপ ব্যবহার করা হয়। যেহেতু আমরা পূর্বেই লুপ সম্পর্কে জেনেছি তাই এখানে লুপ নিয়ে আলোচনা না করে একটি উদাহরণ দেখে নিই –
import numpy as np
array_1D = np.array([1, 2]) #an 1D array
array_2D = np.array([[1, 2],[3,4]]) #a 2D array
for value in array_1D:
print(value)
print("2D array elements-")
for row in array_2D:
for col in row:
print(col)
ফলাফল –
1
2
2D array elements-
1
2
3
4
৬ষ্ঠ লাইনে আমরা একটি for লুপ ব্যবহার করে array_1D এর ভ্যালু অ্যাক্সেস করেছি এবং প্রিন্ট করেছি। 1D এর জন্য একটি for লুপ ই যথেষ্ঠ। কিন্তু 2D এর ক্ষেত্রে দুইটি লুপ ব্যবহার করেছি। প্রথম লুপ দিয়ে অ্যারের সারি এবং দ্বিতীয় লুপ দিয়ে স্তম্ভ কে অ্যাক্সেস করা হয়েছে।
নোটঃ একটি লুপ এর ভিতর আর একটি লুপ ব্যবহারকে প্রোগ্রামিং এর ভাষায় নেস্টেড লুপ (Nested Loop) বলে। আপনি চাইলে একাধিক নেস্টেড লুপ পরিচালনা করতে পারেন।
নোটঃ একাধিক মাত্রার অ্যারে যেমন 3D অ্যারে এক্সেস করার জন্য তিনটি লুপ ব্যবহার করা লাগবে। এভাবে যত মাত্রার অ্যারে ঠিক ততগুলো লুপ ব্যবহার করতে হবে।
where()
নামপাই এ where ব্যবহার করে কোন একটি নির্দিষ্ট উপাদানকে সহজেই বিভিন্ন অপারেশন করা যায়। একটি উদাহরণ দেখে নিই-
import numpy as np
np_array = np.array([1, 2, 3, 4])
new_array = np.where(np_array > 2)
print(new_array)
ফলাফল-
(array([2, 3], dtype=int64),)
৫ম লাইনে np_array>2 দিয়ে ২ এর থেকে সকল বড় সংখ্যাকে বোঝানো হয়েছে।
বিঃদ্রঃ where() ক্লজ এর ভিতর যেকোন কন্ডিশনাল স্টেটমেন্ট ব্যবহার করা যায়।
নামপাই এর কিছু প্রয়োজনীয় মেথড
এখানে কিছু প্রয়োজনীয় মেথড নিয়ে আলোচনা করা হল (বর্ণমালার ক্রমাণুসারে)।
absolute()
কোন অ্যারের পরম মান বের করতে ব্যবহার করা হয়।
import numpy as np
np_array = [1, -2, -3]
new_array = np.absolute(np_array)
print(new_array)
ফলাফল-
[1 2 3]
add()
add() মেথডটি নামপাই অ্যারে তে উপাদান অনুযায়ী (elementwise) যোগ করতে ব্যবহার করা হয়।
import numpy as np
np_array1 = [1, 2, 3]
np_array2 = [4, 5, 6]
new_array = np.add(np_array1, np_array2)
print(new_array)
ফলাফল-
[5 7 9]
arange()
এই মেথডটি একটি নির্দিষ্ট ব্যপ্তির মধ্যে নতুন সংখ্যা সৃষ্টির জন্য ব্যবহার করা হয়। এটিকে তিনভাবে ব্যবহার করা যায় :- ০ থেকে নির্দিষ্ট সংখ্যা পর্যন্ত সংখ্যা তৈরি – arange(number) ; একটি নির্দিষ্ট সংখ্যা থেকে আর একটি নির্দিষ্ট সংখ্যা পর্যন্ত সংখ্যা তৈরি – arange(start,end) ; এবং একটি নির্দিষ্ট সংখ্যা থেকে আর একটি নির্দিষ্ট সংখ্যা একটি নির্দিষ্ট বিরতিতে তৈরি – arange(start,end,step)
import numpy as np
np_array1 = np.arange(10)
np_array2 = np.arange(10,20)
np_array3 = np.arange(2, 3,.1)
print(np_array1)
print(np_array2)
print(np_array3)
ফলাফল-
[0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]
[2. 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9]
ceil()
ceil() মেথডটি কোন একটি ভগ্নাংশ নাম্বারকে নিকটতম সর্বোচ্চ পূর্ণসংখ্যায় রুপান্তর করে।
import numpy as np
np_array = [1, 2.58646874, 3.2358979]
new_array = np.ceil(np_array)
print(new_array)
ফলাফল-
[1. 3. 4.]
floor()
floor() মেথডটি কোন একটি ভগ্নাংশ নাম্বারকে নিকটতম নিম্ন পূর্ণসংখ্যায় রুপান্তর করে।
import numpy as np
np_array = [1, 2.58646874, 3.2358979]
new_array = np.floor(np_array)
print(new_array)
ফলাফল-
[1. 2. 3.]
multiply()
অ্যারের উপাদানগুলিকে গুন করার জন্য ব্যবহার করা হয়।
import numpy as np
np_array1 = [1, 2, 3]
np_array2 = [4, 5, 6]
new_array = np.multiply(np_array1, np_array2)
print(new_array)
ফলাফল-
[ 4 10 18]
ones()
ones() মেথডটি একটি নির্দিষ্ট আকৃতির অ্যারে তৈরি করে যার প্রতিটি উপাদানের মান হয় এক। এখানে আমরা একটি দ্বিমাত্রিক অ্যারে তৈরির প্রক্রিয়া দেখে নিই।
import numpy as np
np_array = np.ones((2,3))
print(np_array)
ফলাফল-
[[1. 1. 1.]
[1. 1. 1.]]
এখানে দেখা যাচ্ছে একটি ২ বাই ৩ মাত্রার একটি অ্যারে তৈরি হয়েছে যার প্রতিটি উপাদানের মান এক।
sort()
sort() মেথডটি ব্যবহার করে কোন একটি নামপাই অ্যারের উপাদানকে ক্রমানুসারা সাজানো যায়। কোন অ্যালগরিদম ব্যবহার করে সর্টিং করা হবে সেটা kind প্যারামিটার দিয়ে পাস করা যায়। kind এর প্রপার্টি হিসাবে quicksort, mergesort, heapsort, এবং stable ব্যবহার করা যায়। এখানে একটি উদাহরণ দেখে নিই-
import numpy as np
np_array = np.array([1, 5, 3, 7])
new_array = np.sort(np_array, kind='quicksort')
print(new_array)
ফলাফল-
[1 3 5 7]
ফলাফল এ দেখতে পাচ্ছি যে এলোমেলো অ্যারে টি একটি নির্দিষ্ট ক্রম ব্যবহার করে সজ্জিত হয়েছ।
বিঃদ্রঃ এখানে kind প্যারামিটার টি ঐচ্ছিক, না দিলেও সর্ট হবে।
subtract()
একটি অ্যারে থেকে আর একটি অ্যারে কে বিয়োগ করার জন্য ব্যবহার করা হয়।
import numpy as np
np_array1 = [1, 2, 3]
np_array2 = [4, 5, 6]
new_array = np.subtract(np_array2, np_array1)
print(new_array)
ফলাফল-
[3 3 3]
zeros()
zeros() মেথডটি একটি নির্দিষ্ট আকৃতির অ্যারে তৈরি করে যার প্রতিটি উপাদানের মান হয় শুণ্য। এখানে আমরা একটি দ্বিমাত্রিক অ্যারে তৈরির প্রক্রিয়া দেখে নিই।
import numpy as np
np_array = np.zeros((2,3))
print(np_array)
ফলাফল-
[[0. 0. 0.]
[0. 0. 0.]]
এখানে দেখা যাচ্ছে ২ বাই ৩ মাত্রার একটি অ্যারে তৈরি হয়েছে যার প্রতিটি উপাদানের মান শুণ্য।