নামপাই বড়, এবং বহু ডাইমেনশনের অ্যারে ও ম্যাট্রিক্সের জন্য, সাথে সাথে উঁচু পর্যায়ের গাণিতিক ফাংশন এ অ্যারে সমূহের মধ্যে অপারেটের জন্য উন্নয়ন করা পাইথনের একটি লাইব্রেরি। নামপাইয়ের পূর্বপুরুষ নিউমেরিক জিম হুগুনিন অন্যকিছু উন্নয়নকারীর সহযোগিতায় তৈরী করেছিলেন। ২০০৫ সালে ত্রাভিস ওলিফ্যান্ট নামপাই তৈরী করেন।
এ পর্যায়ে Numpy ইন্সটল করে কাজটা শুরু করা যাক-
import numpy as np riders_data = np.genfromtxt("D:\RidersData1.csv", delimiter=",", skip_header=1) fare = [int(item[10]) for item in riders_data[0:]] print(sum(fare))
এখন যদি Numpy ব্যাবহার করে Array তৈরী করি যা আসলে Array এর Array তৈরী করবে ।
riders_data_array = np.array(riders_data[1:], dtype=np.int)
এখানে dtype=np.int আসলে নিশ্চিত করবে যেন ডাটা গুলোকে String থেকে int এ রুপান্তর(convert) করে নেয়।
এখন আমরা যদি Array টা দেখতে চাই?
ইনপুট print(riders_data_array)
আউটপুট [[4445115 143 3180 15536 5] [4341383 167 3067 15704 5] [4153972 163 2383 15692 5] [4052253 167 3055 15703 5] [3935184 191 1520 12760 5] [3896665 202 2251 13224 5] [3807622 141 2611 15722 5] [3723194 236 2063 16165 5] [3650954 233 2411 15695 5] [3592384 262 5845 15721 5] [3538266 204 4802 11583 5] [3496106 242 3462 15698 5] [3455465 235 2588 15695 5] [3361305 229 1883 15724 5] [3353856 230 2173 15574 5] [3342150 234 2483 15700 5] [3302407 217 2461 15716 5] [3263818 163 2393 15688 5] [3227817 163 2270 15691 5] [3189625 166 2976 15635 5] [3118401 244 3155 16076 5] [3056517 245 3161 12712 5] [2966371 191 1882 12546 5] [2904590 242 2844 16122 5] [2872271 135 2652 15900 5]]
আমরা এখন যেকোন রকমের Array তৈরি করতে পারি
ইনপুট any_array = np.ones((5,6)) print(any_array)
আউটপুট [[ 1. 1. 1. 1. 1. 1.] [ 1. 1. 1. 1. 1. 1.] [ 1. 1. 1. 1. 1. 1.] [ 1. 1. 1. 1. 1. 1.] [ 1. 1. 1. 1. 1. 1.]]
এখানে np.ones((5,6)) তে 5 এবং 6 যথাক্রমে row আর column বুঝাচ্ছে ।ঠিক একই রকম ভাবে একটা array তৈরি করতে পারি যেটার সবগুলো ভ্যালু হবে zero।
ইনপুট any_array = np.zeros((5,6)) print(any_array)
আউটপুট [[ 0. 0. 0. 0. 0. 0.] [ 0. 0. 0. 0. 0. 0.] [ 0. 0. 0. 0. 0. 0.] [ 0. 0. 0. 0. 0. 0.] [ 0. 0. 0. 0. 0. 0.]]
আর এখন যদি চিন্তা করি একটা array তৈরি করব যার ভ্যালুগুলো হবে যে কোন নাম্বার বা Random ।
ইনপুট any_array = np.random.rand(2,3) print(any_array)
আউটপুট [[ 0.58870582 0.75596673 0.48148491] [ 0.39392526 0.16046594 0.34446376]]
এই পর্যায়ে এসে আমি দুটো বিষয় নিয়ে আলোচনা করতে চাই –
১। Random নাম্বারের একটা array তৈরি করতে হবে যেখানে সংখ্যাগুলো হবে পূর্ণমান বা integer
২। any_array = np.eye(4) – এই কোডটি run করলে যেই আউটপুট আসল তার মানে কি ?
স্লাইসিং (Slicing) :
শব্দটা শুনেই বুঝা যাচ্ছে – যে কোন বড় কোন Array থেকে কিছু অংশ কেটে নেয়াই slicing । যেমন আমাদের মূল ডাটা এর array ( riders_data_array) যা দেখতে এমন
[[4445115 143 3180 15536 5] [4341383 167 3067 15704 5] [4153972 163 2383 15692 5] [4052253 167 3055 15703 5] [3935184 191 1520 12760 5] [3896665 202 2251 13224 5] [3807622 141 2611 15722 5] [3723194 236 2063 16165 5] [3650954 233 2411 15695 5] [3592384 262 5845 15721 5] [3538266 204 4802 11583 5] [3496106 242 3462 15698 5] [3455465 235 2588 15695 5] [3361305 229 1883 15724 5] [3353856 230 2173 15574 5] [3342150 234 2483 15700 5] [3302407 217 2461 15716 5] [3263818 163 2393 15688 5] [3227817 163 2270 15691 5] [3189625 166 2976 15635 5] [3118401 244 3155 16076 5] [3056517 245 3161 12712 5] [2966371 191 1882 12546 5] [2904590 242 2844 16122 5] [2872271 135 2652 15900 5]]
আমি যদি এখন এখান থেকে ২য় কলাম এর প্রথম ৫ টা ডাটা দেখতে চাই –
ইনপুট print(riders_data_array[0:5,1])
আউটপুট [143 167 163 167 191]
এখানে [0:5,1] অংশ টা বুঝাচ্ছে – প্রথম ৫ টি row এর ডাটা এবং তা ২য় column এর। এখানে যদি 0 এর পরিবর্তে আমি 1 লিখি – তারমানে তখন প্রথম row বাদ দিয়ে চারটি ডাটা নিবে এবং আউটপুট হবে এরকম
[167 163 167 191]
NumPy নিয়ে পরবর্তী পর্বটি কিছুদিন পর প্রকাশিত হবে। ধন্যবাদ।