හොඳයි යාළුවේ! 😎 එහෙනම් අපි "Data Science Sinhala" පාඩම් මාලාවේ 4 වෙනි එපිසෝඩ් එකට ආවා! කලින් පාඩමේදී (Episode 3) අපි Python වල Data Science වලට අත්යවශ්ය Concepts ටිකක් (Data Structures, Control Flow, Functions) මතක් කරගත්තා, ඒ වගේම අපේ වැඩේට Environment එකක් විදියට Google Colab හදාගන්න හැටිත් බැලුවා.
අද ඉඳන් අපි වැඩේ තව ටිකක් ඉස්සරහට අරන් යනවා. අපි දැන් Python වල Data Science වලටම විශේෂිත වෙච්ච, නැතුවම බැරි Libraries ගැන ඉගෙනගන්න පටන් ගන්නවා. ඒ අතරින් අද අපි මුලින්ම අතගහන්නේ NumPy වලට! 💪
ලෑස්තිද NumPy ලෝකෙට පනින්න? 😉
මුලින්ම, NumPy එක්ක වැඩ කරන්න නම් අපි ඒක අපේ Code එකට ගෙන්නගන්න (import) ඕන. සම්ප්රදායක් විදියට NumPy import කරන්නේ np
කියන කෙටි නමෙන්. ඔයාගේ Colab Notebook එකේ අලුත් Code Cell එකක මේ පේලිය ගහලා Run කරන්න:
import numpy as np
හරි! දැන් np
කියලා ගැහුවම Python දන්නවා අපි කතා කරන්නේ NumPy ගැන කියලා.
ඔයා හිතනවා ඇති "Python වල Lists තියෙද්දී මොකටද මේ අලුත් NumPy Array?" කියලා. හේතු කීපයක් තියෙනවා:
NumPy වල ප්රධානම දේ තමයි ndarray (N-dimensional array) කියන Object එක. මේක හිතන්නකෝ එකම වර්ගයේ දත්ත (numbers) ගොඩක් තියෙන Grid එකක් වගේ.
NumPy Arrays හදාගන්න ක්රම කීපයක් තියෙනවා:
සරලම ක්රමය තමයි Python List එකක් NumPy Array එකක් බවට පත් කරන එක.
# 1D Array එකක් (Vector) list_1d = [1, 2, 3, 4, 5] arr_1d = np.array(list_1d) print("1D Array:\n", arr_1d) print(type(arr_1d)) # <class 'numpy.ndarray'> # 2D Array එකක් (Matrix) list_2d = [[1, 2, 3], [4, 5, 6]] arr_2d = np.array(list_2d) print("\n2D Array:\n", arr_2d)
නිතරම ඕන වෙන විදියේ Arrays හදන්න ලේසි Functions NumPy වල තියෙනවා.
zeros_arr = np.zeros((2, 3)) # Rows 2, Columns 3 print("\nZeros Array:\n", zeros_arr)
ones_arr = np.ones((3, 2), dtype=int) # Integer type එකේ ones හදමු print("\nOnes Array (int):\n", ones_arr)
arange_arr = np.arange(0, 10, 2) # 0 ඉඳන් 10ට අඩු වෙනකන් 2 ගානේ print("\nArange Array:\n", arange_arr)
linspace_arr = np.linspace(0, 1, 5) # 0 සහ 1 අතර points 5ක් print("\nLinspace Array:\n", linspace_arr)
# 0ත් 1ත් අතර random numbers (Uniform distribution) rand_arr = np.random.rand(2, 2) print("\nRandom Array (Uniform):\n", rand_arr) # Standard Normal distribution (mean 0, std dev 1) randn_arr = np.random.randn(2, 2) print("\nRandom Array (Normal):\n", randn_arr) # Random Integers හදන්න randint_arr = np.random.randint(1, 10, size=(3, 3)) # 1ත් 10ත් අතර (10 ඇතුලත් නෑ) 3x3 array එකක් print("\nRandom Integer Array:\n", randint_arr)
අපි හදාගත්ත NumPy Array එකක තියෙන විස්තර දැනගන්න උදව්වෙන Attributes කීපයක් තියෙනවා.
අපි මේ Array එක උදාහරණෙට ගමු:
Python
arr_test = np.array([[10, 20, 30], [40, 50, 60]]) print("\nTest Array:\n", arr_test)
print(f"Number of dimensions (ndim): {arr_test.ndim}") # Output: 2
print(f"Shape of the array (shape): {arr_test.shape}") # Output: (2, 3) -> Rows 2, Columns 3
print(f"Total number of elements (size): {arr_test.size}") # Output: 6 (2 * 3)
print(f"Data type of elements (dtype): {arr_test.dtype}") # Output: int64 (or int32 depending on system) # Float array එකක් හදලා බලමු float_arr = np.array([1.0, 2.5, 3.1]) print(f"\nFloat Array dtype: {float_arr.dtype}") # Output: float64
Array එකක තියෙන නිශ්චිත Element එකක් හරි, කොටසක් හරි ගන්න Indexing සහ Slicing පාවිච්චි කරනවා.
මේක Python Lists වල වගේමයි. Index එක 0 ඉඳන් පටන් ගන්නේ.
Python
arr1 = np.arange(10, 20) # [10, 11, 12, 13, 14, 15, 16, 17, 18, 19] print("\nOriginal 1D Array:", arr1) # Element එකක් ගන්න (Indexing) print(f"Element at index 3: {arr1[3]}") # Output: 13 # කොටසක් ගන්න (Slicing) print(f"Elements from index 2 to 5 (exclusive): {arr1[2:5]}") # Output: [12, 13, 14] print(f"Elements from start to index 4 (exclusive): {arr1[:4]}") # Output: [10, 11, 12, 13] print(f"Elements from index 5 to end: {arr1[5:]}") # Output: [15, 16, 17, 18, 19]
මෙතනදී අපි array[row, column] විදියට Index දෙකක් පාවිච්චි කරනවා.
Python
arr2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print("\nOriginal 2D Array:\n", arr2) # එක Element එකක් ගන්න # Row 1, Column 2 (0-based index) -> අගය 6 print(f"Element at row 1, column 2: {arr2[1, 2]}") # Output: 6 # සම්පූර්ණ Row එකක් ගන්න print(f"Entire Row 0: {arr2[0, :]}") # Output: [1, 2, 3] (: মানে ঐ dimension එකේ ඔක්කොම) print(f"Shorthand for Row 0: {arr2[0]}") # Output: [1, 2, 3] (Row එකක් විතරක් නම් : දාන්නම ඕන නෑ) # සම්පූර්ණ Column එකක් ගන්න print(f"Entire Column 1: {arr2[:, 1]}") # Output: [2, 5, 8] # කොටසක් (Sub-matrix) ගන්න # Rows 0 සහ 1, Columns 1 සහ 2 print("Sub-matrix (Rows 0-1, Cols 1-2):\n", arr2[0:2, 1:3]) # Output: # [[2 3] # [5 6]]
නියමයි! අද අපි NumPy කියන්නේ මොකක්ද, ඇයි ඒක වැදගත්, NumPy වල Core එක වෙන ndarray
එක හදාගන්නේ කොහොමද, ඒකේ Attributes මොනවද, සහ සරලව Data Access කරන්නේ කොහොමද කියලා බැලුවා.
මේක NumPy වල ආරම්භය විතරයි. NumPy වල නියම Power එක තියෙන්නේ Arrays එක්ක කරන්න පුළුවන් Operations වල. ඊළඟ පාඩමෙන් අපි බලමු:
np.sqrt()
, np.sin()
, np.exp()
වගේ Functions Array එකක හැම element එකකටම Apply කරන හැටි.arr.sum()
, arr.mean()
, arr.min()
, arr.max()
වගේ මුළු Array එකටම අදාළ අගයන් ගන්න හැටි.අද පාඩමෙන් NumPy ගැන හොඳ ආරම්භයක් ලැබෙන්න ඇති කියලා හිතනවා. NumPy Arrays කියන්නේ මොනවද, np.array()
, np.zeros()
, np.ones()
, np.arange()
, np.linspace()
වගේ functions වලින් ඒවා හදාගන්නේ කොහොමද, ndim
, shape
, size
, dtype
වගේ attributes වලින් Array එක ගැන විස්තර දැනගන්නේ කොහොමද, සහ [row, column]
Syntax එක පාවිච්චි කරලා Basic Indexing & Slicing කරන්නේ කොහොමද කියන එක අද අපි ඉගෙනගත්තා.
Colab එකේ මේ Code Examples ටික Run කරලා බලන්න. Array Sizes, Data Types වෙනස් කරලා බලන්න. Indexing, Slicing තව තව Practice කරන්න.
❓ ප්රශ්න තියෙනවා නම් අහන්න අමතක කරන්න එපා! ඊළඟ පාඩමෙන් NumPy Operations එක්ක හමුවෙමු!
හැමෝටම ජය! 🎉
Member since 2025-04-09 13:55:06
Comments
Please login to post a comment.
No comments yet. Be the first to comment!