|
🧱 Data Science Sinhala: 04 වන පාඩම - NumPy වලින් වැඩ පටන් ගමු! 💪 (Arrays හැදීම සහ Attributes)

🧱 Data Science Sinhala: 04 වන පාඩම - NumPy වලින් වැඩ පටන් ගමු! 💪 (Arrays හැදීම සහ Attributes)

technology programming data science
By Rasanjana 2025-04-28 18:56:21

හොඳයි යාළුවේ! 😎 එහෙනම් අපි "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 ලෝකයට සාදරයෙන් පිළිගනිමු!

මුලින්ම, NumPy එක්ක වැඩ කරන්න නම් අපි ඒක අපේ Code එකට ගෙන්නගන්න (import) ඕන. සම්ප්‍රදායක් විදියට NumPy import කරන්නේ np කියන කෙටි නමෙන්. ඔයාගේ Colab Notebook එකේ අලුත් Code Cell එකක මේ පේලිය ගහලා Run කරන්න:

import numpy as np


හරි! දැන් np කියලා ගැහුවම Python දන්නවා අපි කතා කරන්නේ NumPy ගැන කියලා.

🤔 ඇයි Python Lists වෙනුවට NumPy?

ඔයා හිතනවා ඇති "Python වල Lists තියෙද්දී මොකටද මේ අලුත් NumPy Array?" කියලා. හේතු කීපයක් තියෙනවා:

  1. වේගය සහ කාර්යක්ෂමතාව (Performance): NumPy Arrays හදලා තියෙන්නේ C Language එකෙන්. ඒ වගේම Array එකක තියෙන දත්ත (elements) Memory එකේ තැන්පත් වෙන්නේ එක ලඟින් එක (contiguous). මේ නිසා, Python Lists වලට වඩා NumPy Arrays එක්ක කරන ගණිතමය කර්මයන් (Mathematical Operations) ගොඩක් ගොඩක් වේගවත් 🚀. විශාල Data ප්‍රමාණයක් එක්ක වැඩ කරද්දී මේ වේගය හරිම වැදගත්. Memory පාවිච්චියත් අඩුයි.
  2. පහසුව (Convenience): Numbers ගොඩක් එක්ක එකපාර වැඩ කරන්න (Vectorization), Matrix Operations කරන්න, Linear Algebra වැඩ කරන්න, Random Numbers හදන්න වගේ දේවල් වලට NumPy වල හදලම තියෙන Functions ගොඩක් තියෙනවා. Python Lists වලින් මේවා කරන්න ගියොත් ගොඩක් Code ලියන්න වෙනවා.
  3. අත්තිවාරම (Foundation): Data Science වල පාවිච්චි වෙන ගොඩක් ප්‍රධාන Libraries (Pandas, Scikit-learn, Matplotlib වගේ) යටින් පාවිච්චි කරන්නේ NumPy Arrays. නැත්නම් NumPy එක්ක හරිම හොඳට වැඩ කරනවා. ඒ නිසා NumPy කියන්නේ Data Science වල අනිවාර්ය අංගයක්.


🧱 NumPy Array (ndarray) - අපේ ප්‍රධාන මෙවලම!

NumPy වල ප්‍රධානම දේ තමයි ndarray (N-dimensional array) කියන Object එක. මේක හිතන්නකෝ එකම වර්ගයේ දත්ත (numbers) ගොඩක් තියෙන Grid එකක් වගේ.

  • Homogeneous: Array එකක තියෙන්න පුළුවන් එකම Data Type එකක දේවල් විතරයි (උදා: ඔක්කොම integers, නැත්නම් ඔක්කොම floating point numbers). Lists වගේ mix කරන්න බෑ. මේක තමයි වේගයට එක හේතුවක්.
  • N-dimensional: එක Dimension එකක් (1D - Vector වගේ), Dimensions දෙකක් (2D - Matrix වගේ, Table එකක් වගේ), එහෙමත් නැත්නම් Dimensions ගොඩක් (3D, 4D...) තියෙන්න පුළුවන්.
  • Indexed: Array එකක තියෙන හැම element එකකටම address එකක් (index) තියෙනවා. 1D නම් එක index එකයි, 2D නම් index දෙකයි (row, column) වගේ.


🛠️ NumPy Arrays හදාගන්න විදි

NumPy Arrays හදාගන්න ක්‍රම කීපයක් තියෙනවා:

1. Python Lists වලින් np.array()

සරලම ක්‍රමය තමයි 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)

2. NumPy වල Built-in Functions වලින්

නිතරම ඕන වෙන විදියේ Arrays හදන්න ලේසි Functions NumPy වල තියෙනවා.

  • np.zeros(): ඔක්කොම බිංදු තියෙන Array එකක්. Size එක tuple එකක් විදියට දෙන්න ඕන.
zeros_arr = np.zeros((2, 3)) # Rows 2, Columns 3
print("\nZeros Array:\n", zeros_arr)
  • np.ones(): ඔක්කොම එකේ ඒවා තියෙන Array එකක්.
ones_arr = np.ones((3, 2), dtype=int) # Integer type එකේ ones හදමු
print("\nOnes Array (int):\n", ones_arr)
  • np.arrange(): Python වල range() වගේ. Start, Stop (exclusive), Step අගයන් දෙන්න පුළුවන්. හැබැයි මේකෙන් හැදෙන්නේ Array එකක්.
arange_arr = np.arange(0, 10, 2) # 0 ඉඳන් 10ට අඩු වෙනකන් 2 ගානේ
print("\nArange Array:\n", arange_arr)
  • np.linspace(): Start, Stop (inclusive) අගයන් අතරේ, නියමිත ගානක් (num) ඒකාකාරව බෙදිලා යන විදියට points ටිකක් දෙනවා.
linspace_arr = np.linspace(0, 1, 5) # 0 සහ 1 අතර points 5ක්
print("\nLinspace Array:\n", linspace_arr)
  • np.random: Random numbers තියෙන Arrays හදන්න functions ගොඩක් තියෙනවා (මේ ගැන වෙනම බලමු, දැනට මේ දෙක).
# 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)


🧐 Array එකේ ගුණාංග (Attributes) දැනගමු

අපි හදාගත්ත NumPy Array එකක තියෙන විස්තර දැනගන්න උදව්වෙන Attributes කීපයක් තියෙනවා.

අපි මේ Array එක උදාහරණෙට ගමු:

Python


arr_test = np.array([[10, 20, 30], [40, 50, 60]])
print("\nTest Array:\n", arr_test)
  • arr.ndim: Array එකේ Dimensions ගාන (අක්ෂ ගණන). Python
print(f"Number of dimensions (ndim): {arr_test.ndim}") # Output: 2
  • arr.shape: හැම Dimension එකකම Size එක පෙන්නන Tuple එකක්. Rows ගාන, Columns ගාන වගේ.
print(f"Shape of the array (shape): {arr_test.shape}") # Output: (2, 3) -> Rows 2, Columns 3
  • arr.size: Array එකේ තියෙන මුළු Elements ගාන.
print(f"Total number of elements (size): {arr_test.size}") # Output: 6 (2 * 3)
  • arr.dtype: Array එකේ තියෙන දත්ත වල Data Type එක.
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 එකෙන් කොටස් ගමු (Basic Indexing & Slicing)

Array එකක තියෙන නිශ්චිත Element එකක් හරි, කොටසක් හරි ගන්න Indexing සහ Slicing පාවිච්චි කරනවා.

1D Arrays (Vectors)

මේක 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]


2D Arrays (Matrices)

මෙතනදී අපි 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 කියන්නේ මොකක්ද, ඇයි ඒක වැදගත්, NumPy වල Core එක වෙන ndarray එක හදාගන්නේ කොහොමද, ඒකේ Attributes මොනවද, සහ සරලව Data Access කරන්නේ කොහොමද කියලා බැලුවා.

මේක NumPy වල ආරම්භය විතරයි. NumPy වල නියම Power එක තියෙන්නේ Arrays එක්ක කරන්න පුළුවන් Operations වල. ඊළඟ පාඩමෙන් අපි බලමු:

  • Mathematical Operations: Arrays දෙකක් එකතු කිරීම, අඩු කිරීම, ගුණ කිරීම, බෙදීම වගේ දේවල් Element-wise කරන හැටි.
  • Universal Functions (ufuncs): np.sqrt(), np.sin(), np.exp() වගේ Functions Array එකක හැම element එකකටම Apply කරන හැටි.
  • Aggregation: arr.sum(), arr.mean(), arr.min(), arr.max() වගේ මුළු Array එකටම අදාළ අගයන් ගන්න හැටි.
  • Broadcasting: විවිධ Shapes තියෙන Arrays අතර Operations කරන හැටි (NumPy වල සුපිරිම feature එකක්!).
  • Boolean Indexing: Conditions පාවිච්චි කරලා Array එකකින් Data Filter කරන හැටි.


✅ Conclusion

අද පාඩමෙන් 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 එක්ක හමුවෙමු!

හැමෝටම ජය! 🎉


Rasanjana

Rasanjana

Member since 2025-04-09 13:55:06

Comments

Please login to post a comment.

No comments yet. Be the first to comment!