অ্যারে এবং ডিকশনারি জুলিয়া ভাষায় গুরুত্বপূর্ণ ডেটা স্ট্রাকচার, যা ডেটা সংরক্ষণ এবং পরিচালনা করতে ব্যবহৃত হয়। অ্যারে (Array) এক বা একাধিক মানের সমষ্টি এবং ডিকশনারি (Dictionary) একটি কী-ভ্যালু জোড় (key-value pair) সংরক্ষণ করে।
এখানে অ্যারে এবং ডিকশনারি সম্পর্কে বিস্তারিত আলোচনা করা হলো।
১. অ্যারে (Arrays) in Julia
অ্যারে হলো এক ধরনের ডেটা স্ট্রাকচার যা একই টাইপের একাধিক মান বা উপাদান সংরক্ষণ করতে পারে। জুলিয়া ভাষায়, অ্যারে তৈরি করতে [] স্নিগ্ধভাবে ব্যবহার করা হয়।
অ্যারে তৈরি করা
arr = [1, 2, 3, 4, 5] # Integer array
println(arr) # Output: [1, 2, 3, 4, 5]এখানে, arr হলো একটি অ্যারে যা ৫টি পূর্ণসংখ্যা ধারণ করছে।
অ্যারে অ্যাক্সেস (Accessing Array Elements)
অ্যারের উপাদানগুলোকে ইনডেক্সিং এর মাধ্যমে অ্যাক্সেস করা হয়। জুলিয়া ভাষায় অ্যারের ইনডেক্স শুরু হয় 1 থেকে।
arr = [10, 20, 30, 40, 50]
println(arr[1]) # Output: 10 (Access the first element)
println(arr[3]) # Output: 30 (Access the third element)অ্যারে পরিবর্তন (Modifying Arrays)
আপনি অ্যারের উপাদান পরিবর্তন করতে পারেন ইনডেক্স ব্যবহার করে:
arr[2] = 25 # Change the second element
println(arr) # Output: [10, 25, 30, 40, 50]অ্যারে স্লাইসিং (Array Slicing)
আপনি অ্যারের একটি নির্দিষ্ট অংশ (slice) নিতে পারেন:
arr = [10, 20, 30, 40, 50]
slice = arr[2:4] # Slice from index 2 to 4
println(slice) # Output: [20, 30, 40]মাল্টি-ডাইমেনশনাল অ্যারে (Multi-dimensional Arrays)
জুলিয়া মাল্টি-ডাইমেনশনাল অ্যারে সমর্থন করে, যেমন ২D অ্যারে (ম্যাট্রিক্স):
matrix = [1 2 3; 4 5 6; 7 8 9] # 3x3 matrix
println(matrix)এটি একটি ৩x৩ ম্যাট্রিক্স তৈরি করবে। ইনডেক্সিং একইভাবে কাজ করবে, যেমন:
println(matrix[2, 3]) # Output: 6 (Access element at row 2, column 3)২. ডিকশনারি (Dictionaries) in Julia
ডিকশনারি হলো একটি ডেটা স্ট্রাকচার যা কী-ভ্যালু জোড়ে ডেটা সংরক্ষণ করে। জুলিয়া ভাষায় ডিকশনারি তৈরি করতে Dict() ফাংশন ব্যবহার করা হয়।
ডিকশনারি তৈরি করা
d = Dict("name" => "Alice", "age" => 30, "city" => "New York")
println(d) # Output: Dict("name" => "Alice", "age" => 30, "city" => "New York")এখানে, "name", "age", এবং "city" হলো কী (keys), এবং তাদের সাথে সম্পর্কিত মান (values) হল "Alice", 30, এবং "New York"।
ডিকশনারি থেকে মান অ্যাক্সেস করা (Accessing Values from Dictionary)
কী ব্যবহার করে ডিকশনারি থেকে মান অ্যাক্সেস করা হয়:
println(d["name"]) # Output: Alice
println(d["age"]) # Output: 30ডিকশনারি মান পরিবর্তন (Modifying Values in Dictionary)
ডিকশনারির কোনো মান পরিবর্তন করতে কী ব্যবহার করে অ্যাসাইন করা হয়:
d["age"] = 35 # Change the value of "age"
println(d) # Output: Dict("name" => "Alice", "age" => 35, "city" => "New York")নতুন কী-ভ্যালু জোড় যোগ করা (Adding New Key-Value Pairs)
আপনি নতুন কী-ভ্যালু জোড়ও যোগ করতে পারেন:
d["country"] = "USA" # Add a new key-value pair
println(d) # Output: Dict("name" => "Alice", "age" => 35, "city" => "New York", "country" => "USA")ডিকশনারি থেকে কী এবং মান বের করা (Getting Keys and Values)
ডিকশনারি থেকে কী বা মান বের করতে keys() এবং values() ফাংশন ব্যবহার করা হয়:
println(keys(d)) # Output: ["name", "age", "city", "country"]
println(values(d)) # Output: ["Alice", 35, "New York", "USA"]ডিকশনারি অপসারণ (Removing Key-Value Pairs)
ডিকশনারি থেকে কোনো কী-ভ্যালু জোড় মুছে ফেলার জন্য delete() ফাংশন ব্যবহার করা হয়:
delete!(d, "city") # Remove the key "city"
println(d) # Output: Dict("name" => "Alice", "age" => 35, "country" => "USA")৩. অ্যারে এবং ডিকশনারি মিশ্রিত ব্যবহার
অ্যারে এবং ডিকশনারি একসাথে ব্যবহার করা সম্ভব, যেমন অ্যারের মধ্যে ডিকশনারি রাখলে:
arr = [Dict("name" => "Alice", "age" => 30), Dict("name" => "Bob", "age" => 25)]
println(arr[1]["name"]) # Output: Alice
println(arr[2]["age"]) # Output: 25এখানে, arr হলো একটি অ্যারে, এবং প্রতিটি উপাদান একটি ডিকশনারি যা name এবং age কী ধারণ করে।
সারসংক্ষেপ
জুলিয়া ভাষায় অ্যারে এবং ডিকশনারি শক্তিশালী ডেটা স্ট্রাকচার যা বিভিন্ন ধরনের ডেটা সংরক্ষণ এবং প্রক্রিয়া করতে ব্যবহৃত হয়। অ্যারে ব্যবহার করে একই টাইপের একাধিক উপাদান একটি ধারাবাহিকভাবে সংরক্ষণ করা হয়, এবং ডিকশনারি ব্যবহৃত হয় কী-ভ্যালু জোড়ে ডেটা সংরক্ষণ করতে। এই ডেটা স্ট্রাকচারগুলি কোডে নমনীয়তা এবং কার্যকারিতা নিয়ে আসে এবং বড় ডেটা সেট প্রক্রিয়া করতে খুবই কার্যকরী।
Arrays হল একই ধরনের ডেটা আইটেমের একটি সংগ্রহ যা একটি একক ভেরিয়েবলের মধ্যে রাখা হয়। জুলিয়া ভাষায় Arrays খুবই শক্তিশালী এবং ব্যবহারযোগ্য ডেটা স্ট্রাকচার, যা গাণিতিক গণনা, ডেটা সায়েন্স এবং অন্যান্য অনেক ক্ষেত্রে ব্যবহৃত হয়।
জুলিয়া ভাষায় অ্যারে (array) ডিক্লেয়ার এবং ইনিশিয়ালাইজ করা সহজ এবং এটি বিভিন্ন ধরনের ডেটা সংরক্ষণ করতে সক্ষম।
১. অ্যারে ডিক্লারেশন (Array Declaration)
একমাত্রিক (1D) বা একাধিক মাত্রার (2D, 3D) অ্যারে তৈরি করা যায়। একটি অ্যারে ডিফাইন করার জন্য [] সিম্বল ব্যবহার করা হয়।
সিনট্যাক্স:
array_name = [element1, element2, ..., elementN]উদাহরণ:
# একমাত্রিক অ্যারে ডিক্লেয়ার করা
arr1 = [1, 2, 3, 4, 5] # Integer অ্যারে
arr2 = [3.14, 2.71, 1.61] # Float অ্যারে
arr3 = ["apple", "banana", "cherry"] # String অ্যারেএখানে, arr1, arr2, এবং arr3 হল একমাত্রিক (1D) অ্যারে।
২. অ্যারে ইনিশিয়ালাইজেশন (Array Initialization)
অ্যারে ইনিশিয়ালাইজ করার সময় আমরা অ্যারের মধ্যে বিভিন্ন ধরনের মান (value) নির্ধারণ করতে পারি, এবং অ্যারে শূন্য মানে (empty) শুরু করতে পারি।
- একটি শূন্য অ্যারে (Empty Array) তৈরি করা:
- অ্যারের প্রতিটি উপাদান শূন্য বা নির্দিষ্ট মান দিয়ে পূর্ণ করা যায়।
উদাহরণ:
# শূন্য অ্যারে ডিক্লেয়ার করা (integer অ্যারে)
arr_zero = zeros(Int, 5) # ৫টি শূন্য মান ধারণ করে
println(arr_zero) # আউটপুট: [0, 0, 0, 0, 0]
# শূন্য দশমিক মান সহ অ্যারে
arr_float_zero = zeros(Float64, 3) # ৩টি শূন্য দশমিক মান
println(arr_float_zero) # আউটপুট: [0.0, 0.0, 0.0]- নির্দিষ্ট মান দিয়ে অ্যারে ইনিশিয়ালাইজ করা:
- অ্যারে ইনিশিয়ালাইজ করতে
fill()ফাংশন ব্যবহার করা যেতে পারে।
- অ্যারে ইনিশিয়ালাইজ করতে
উদাহরণ:
# অ্যারে ইনিশিয়ালাইজ করা একটি নির্দিষ্ট মান দিয়ে
arr_fill = fill(7, 4) # ৪টি '7' দিয়ে পূর্ণ অ্যারে
println(arr_fill) # আউটপুট: [7, 7, 7, 7]- একাধিক মাত্রার অ্যারে (Multi-dimensional Arrays):
- জুলিয়া অ্যারের জন্য একাধিক মাত্রা সমর্থন করে, যেমন 2D বা 3D অ্যারে।
উদাহরণ (2D অ্যারে):
# 2D অ্যারে ডিক্লেয়ার করা
arr_2d = [1 2 3; 4 5 6; 7 8 9]
println(arr_2d)এখানে, একটি 3x3 2D অ্যারে ডিক্লেয়ার করা হয়েছে, যার মধ্যে প্রতিটি সারি পৃথকভাবে নির্ধারিত।
উদাহরণ (3D অ্যারে):
# 3D অ্যারে ডিক্লেয়ার করা
arr_3d = reshape(1:24, 2, 3, 4) # 2x3x4 আকারে অ্যারে
println(arr_3d)৩. অ্যারে উপাদান অ্যাক্সেস (Accessing Array Elements)
একটি অ্যারে তৈরি করার পর, আমরা তার উপাদান (elements) অ্যাক্সেস করতে পারি, একমাত্রিক বা একাধিক মাত্রার অ্যারের ক্ষেত্রে।
একমাত্রিক অ্যারে:
arr = [10, 20, 30, 40] println(arr[1]) # আউটপুট: 10 (প্রথম উপাদান) println(arr[3]) # আউটপুট: 30 (তৃতীয় উপাদান)2D অ্যারে:
arr_2d = [1 2 3; 4 5 6; 7 8 9] println(arr_2d[2, 3]) # আউটপুট: 6 (২য় সারি, ৩য় কলাম)3D অ্যারে:
arr_3d = reshape(1:24, 2, 3, 4) println(arr_3d[1, 2, 3]) # আউটপুট: 7 (প্রথম স্তর, দ্বিতীয় সারি, তৃতীয় কলাম)
৪. অ্যারে ফাংশন এবং অপারেশন
জুলিয়া অ্যারের উপর বিভিন্ন ফাংশন এবং অপারেশন সমর্থন করে, যা অ্যারের উপাদানগুলির সাথে কাজ করার জন্য ব্যবহৃত হয়।
অ্যারের দৈর্ঘ্য (Length of an Array):
- অ্যারের মোট উপাদান সংখ্যা জানাতে
length()ফাংশন ব্যবহার করা হয়।
উদাহরণ:
arr = [1, 2, 3, 4, 5] println(length(arr)) # আউটপুট: 5- অ্যারের মোট উপাদান সংখ্যা জানাতে
অ্যারে যোগফল (Sum of Array Elements):
- অ্যারের উপাদানগুলির যোগফল বের করতে
sum()ফাংশন ব্যবহার করা হয়।
উদাহরণ:
arr = [1, 2, 3, 4, 5] println(sum(arr)) # আউটপুট: 15- অ্যারের উপাদানগুলির যোগফল বের করতে
অ্যারে সংশোধন (Modifying Array):
- অ্যারের একটি নির্দিষ্ট উপাদান পরিবর্তন করা যেতে পারে।
উদাহরণ:
arr = [10, 20, 30, 40] arr[2] = 25 # দ্বিতীয় উপাদান পরিবর্তন করা println(arr) # আউটপুট: [10, 25, 30, 40]
সারসংক্ষেপ
- Arrays হল একটি ডেটা স্ট্রাকচার যা এক ধরনের মানের একটি সংগ্রহ সংরক্ষণ করে।
- অ্যারে ডিক্লেয়ার করতে
[]ব্যবহার করা হয় এবংzeros(),fill()এবংreshape()ফাংশন ব্যবহার করে ইনিশিয়ালাইজ করা যায়। - অ্যারের উপাদান অ্যাক্সেস করতে সেগুলি ইনডেক্স দ্বারা উল্লেখ করা হয়।
- অ্যারে সম্পর্কিত বিভিন্ন অপারেশন যেমন
length(),sum(), এবং সংশোধন সহজেই করা যায়।
এটি জুলিয়া প্রোগ্রামিং ভাষায় অ্যারে ব্যবহারের মৌলিক ধারণা এবং প্রয়োগ ছিল।
জুলিয়া প্রোগ্রামিং ভাষায় Arrays একটি গুরুত্বপূর্ণ ডেটা স্ট্রাকচার, যা একাধিক মান বা উপাদান ধারণ করতে পারে। জুলিয়া ভাষায় আপনি অ্যারে-এ (Array) বিভিন্ন ধরনের অপারেশন যেমন Add (যোগ করা), Remove (অপসারণ করা) এবং Update (আপডেট করা) সহজে করতে পারেন। নিচে এই অপারেশনগুলির বিস্তারিত আলোচনা করা হলো।
১. Add (যোগ করা)
Arrays-এ নতুন উপাদান যোগ করতে push!, append!, এবং insert! ফাংশন ব্যবহার করা হয়।
push! ফাংশন:
push! ফাংশন একটি একক উপাদান যোগ করার জন্য ব্যবহৃত হয়। এটি অ্যারের শেষে উপাদান যোগ করে।
সিনট্যাক্স:
push!(array, element)উদাহরণ:
arr = [1, 2, 3]
push!(arr, 4) # ৪ যোগ করা হবে
println(arr) # আউটপুট হবে: [1, 2, 3, 4]append! ফাংশন:
append! ফাংশনটি একটি অ্যারে বা সিকোয়েন্সের সমস্ত উপাদান যোগ করতে ব্যবহৃত হয়।
সিনট্যাক্স:
append!(array, another_array)উদাহরণ:
arr1 = [1, 2, 3]
arr2 = [4, 5, 6]
append!(arr1, arr2) # arr2 এর সব উপাদান arr1-এ যোগ করা হবে
println(arr1) # আউটপুট হবে: [1, 2, 3, 4, 5, 6]insert! ফাংশন:
insert! ফাংশনটি একটি নির্দিষ্ট ইনডেক্সে নতুন উপাদান যোগ করার জন্য ব্যবহৃত হয়।
সিনট্যাক্স:
insert!(array, index, element)উদাহরণ:
arr = [1, 2, 3]
insert!(arr, 2, 10) # ২-নম্বরে ১০ যোগ করা হবে
println(arr) # আউটপুট হবে: [1, 10, 2, 3]২. Remove (অপসারণ করা)
অ্যারে থেকে উপাদান অপসারণ করতে pop!, delete!, এবং remove! ফাংশন ব্যবহার করা হয়।
pop! ফাংশন:
pop! ফাংশনটি অ্যারের শেষ থেকে একটি উপাদান অপসারণ করে।
সিনট্যাক্স:
pop!(array)উদাহরণ:
arr = [1, 2, 3, 4]
pop!(arr) # ৪ অপসারণ করা হবে
println(arr) # আউটপুট হবে: [1, 2, 3]delete! ফাংশন:
delete! ফাংশনটি একটি নির্দিষ্ট উপাদান অপসারণ করে।
সিনট্যাক্স:
delete!(array, element)উদাহরণ:
arr = [1, 2, 3, 4, 5]
delete!(arr, 3) # ৩ অপসারণ করা হবে
println(arr) # আউটপুট হবে: [1, 2, 4, 5]remove! ফাংশন:
remove! ফাংশনটি অ্যারের মধ্যে প্রথম ম্যাচ করা উপাদান অপসারণ করে।
সিনট্যাক্স:
remove!(array, element)উদাহরণ:
arr = [1, 2, 2, 3, 4]
remove!(arr, 2) # ২ প্রথমবারের মতো অপসারণ করা হবে
println(arr) # আউটপুট হবে: [1, 3, 4]৩. Update (আপডেট করা)
অ্যারে-এ উপাদান আপডেট করতে সরাসরি ইনডেক্সের মাধ্যমে পরিবর্তন করা হয়। এটি একটি নির্দিষ্ট ইনডেক্সে নতুন মান সেট করার মাধ্যমে করা হয়।
সিনট্যাক্স:
array[index] = new_valueউদাহরণ:
arr = [1, 2, 3, 4]
arr[2] = 10 # দ্বিতীয় ইনডেক্সে ২কে ১০ দিয়ে আপডেট করা হচ্ছে
println(arr) # আউটপুট হবে: [1, 10, 3, 4]এখানে, arr[2] = 10 কোডের মাধ্যমে দ্বিতীয় উপাদানটি (২) ১০ দিয়ে আপডেট করা হয়েছে।
৪. Additional Array Operations (অতিরিক্ত অ্যারে অপারেশন)
size এবং length:
sizeফাংশন অ্যারের আকার (ডাইমেনশন) জানায়।lengthফাংশন অ্যারের মোট উপাদান সংখ্যা জানায়।
উদাহরণ:
arr = [1, 2, 3, 4]
println(size(arr)) # আউটপুট হবে: (4,)
println(length(arr)) # আউটপুট হবে: 4empty!:
এটি একটি অ্যারের সমস্ত উপাদান মুছে দেয়।
উদাহরণ:
arr = [1, 2, 3, 4]
empty!(arr)
println(arr) # আউটপুট হবে: []সারসংক্ষেপ
জুলিয়া ভাষায় Arrays এর বিভিন্ন অপারেশন যেমন Add (যোগ করা), Remove (অপসারণ করা) এবং Update (আপডেট করা) খুবই সহজ এবং কার্যকরী। push!, append!, এবং insert! ব্যবহার করে নতুন উপাদান যোগ করা যায়, pop!, delete!, এবং remove! ব্যবহার করে উপাদান অপসারণ করা যায়, এবং ইনডেক্সের মাধ্যমে সরাসরি অ্যারের উপাদান আপডেট করা যায়। এই সমস্ত অপারেশন অ্যারের উপর কাজ করতে এবং ডেটা ম্যানিপুলেশন করতে সহায়ক।
জুলিয়া প্রোগ্রামিং ভাষায় multi-dimensional arrays এবং slicing স্ট্রাকচারগুলি ব্যবহার করে আপনি একাধিক মাত্রার (dimension) ডেটা সংরক্ষণ এবং প্রক্রিয়া করতে পারবেন। এই ফিচারগুলি বিশেষভাবে ডেটা সায়েন্স, বৈজ্ঞানিক কম্পিউটিং এবং গাণিতিক বিশ্লেষণের জন্য অত্যন্ত গুরুত্বপূর্ণ।
Multi-dimensional Arrays (বহু-মাত্রিক অ্যারে)
একটি multi-dimensional array এমন একটি অ্যারে যা একাধিক মাত্রার ডেটা সংরক্ষণ করতে সক্ষম। সাধারণত এটি ২ বা তার বেশি মাত্রার অ্যারে হিসেবে ব্যবহৃত হয়।
২-ডি অ্যারে (2D Array)
এটি একটি টেবিলের মতো, যেখানে ডেটা রো (row) এবং কলাম (column) হিসেবে থাকে।
২-ডি অ্যারে তৈরি করা:
arr_2d = [1 2 3; 4 5 6; 7 8 9]
println(arr_2d)আউটপুট:
[1 2 3]
[4 5 6]
[7 8 9]এখানে, একটি ২-ডি অ্যারে তৈরি করা হয়েছে, যার মধ্যে তিনটি রো এবং তিনটি কলাম রয়েছে। প্রতিটি সংখ্যা একটি সেল বা পজিশনে অবস্থান করছে।
৩-ডি অ্যারে (3D Array)
এটি একটি বহুমাত্রিক অ্যারে, যার মধ্যে গভীরতার (depth) জন্য তৃতীয় মাত্রা রয়েছে।
৩-ডি অ্যারে তৈরি করা:
arr_3d = cat(3, [1 2 3; 4 5 6], [7 8 9; 10 11 12], dims=3)
println(arr_3d)আউটপুট:
[
[1 2 3; 4 5 6]
[7 8 9; 10 11 12]
]এখানে, cat(3, ...) ফাংশনটি ৩টি টেবিলকে তৃতীয় মাত্রায় সংযুক্ত করছে, ফলে ৩-ডি অ্যারে তৈরি হচ্ছে।
Slicing (অ্যারে স্লাইসিং)
Slicing হল একটি পদ্ধতি যার মাধ্যমে আপনি একটি অ্যারে থেকে একটি নির্দিষ্ট অংশ বা উপসেট (subset) নির্বাচন করতে পারেন। এটি অ্যারের ইন্ডেক্স ব্যবহার করে করা হয়, এবং এর মাধ্যমে আপনি অ্যারের ভ্যালু অ্যাক্সেস বা পরিবর্তন করতে পারেন।
একটি ২-ডি অ্যারের স্লাইসিং:
arr_2d = [1 2 3; 4 5 6; 7 8 9]রো এবং কলাম স্লাইসিং:
- একটি রো নির্বাচন করা:
row_1 = arr_2d[1, :] # প্রথম রো নির্বাচন
println(row_1) # আউটপুট: [1, 2, 3]এখানে, arr_2d[1, :] প্রথম রো নির্বাচন করবে।
- একটি কলাম নির্বাচন করা:
col_2 = arr_2d[:, 2] # দ্বিতীয় কলাম নির্বাচন
println(col_2) # আউটপুট: [2, 5, 8]এখানে, arr_2d[:, 2] দ্বিতীয় কলাম নির্বাচন করবে।
একটি ৩-ডি অ্যারের স্লাইসিং:
arr_3d = cat(3, [1 2 3; 4 5 6], [7 8 9; 10 11 12], dims=3)একটি ৩-ডি অ্যারে থেকে একটি স্লাইস নির্বাচন:
- তৃতীয় মাত্রা থেকে একটি স্লাইস নির্বাচন করা:
slice_1 = arr_3d[:, :, 1] # প্রথম ৩-ডি স্লাইস নির্বাচন
println(slice_1)আউটপুট:
[1 2 3; 4 5 6]এখানে, arr_3d[:, :, 1] প্রথম ৩-ডি স্লাইস (অর্থাৎ ১ম গভীরতা) নির্বাচন করবে।
- তিনটি ভিন্ন স্লাইস নির্বাচন করা:
slice_2_3 = arr_3d[:, 2, 2] # দ্বিতীয় কলাম এবং দ্বিতীয় গভীরতা থেকে স্লাইস
println(slice_2_3) # আউটপুট: [5, 11]এখানে, arr_3d[:, 2, 2] দ্বিতীয় কলাম এবং দ্বিতীয় গভীরতার ভ্যালু প্রদান করবে।
Indexing (ইন্ডেক্সিং) এবং Slicing
জুলিয়া অ্যারে ইন্ডেক্সিং এবং স্লাইসিং প্রক্রিয়াতে খুবই নমনীয়। 1-based indexing সিস্টেম ব্যবহার করা হয়, যার মানে হলো অ্যারের প্রথম উপাদানটি ইনডেক্স ১ এ থাকে (পাইথনের বিপরীতে যেখানে ০-based indexing হয়)।
স্লাইসিংয়ের আরও উদাহরণ:
- একাধিক রো এবং কলাম স্লাইসিং:
arr_2d = [1 2 3; 4 5 6; 7 8 9]
subset = arr_2d[1:2, 2:3] # প্রথম দুই রো এবং দ্বিতীয় থেকে তৃতীয় কলাম
println(subset) # আউটপুট: [2 3; 5 6]এখানে, arr_2d[1:2, 2:3] প্রথম দুই রো এবং দ্বিতীয় ও তৃতীয় কলামকে নির্বাচন করবে।
Advanced Slicing with Step Sizes
জুলিয়া step sizes সমর্থন করে, যা ইন্ডেক্সিংয়ের মধ্যে স্টেপে স্টেপে নির্বাচনের সুযোগ দেয়। উদাহরণস্বরূপ:
arr_2d = [1 2 3; 4 5 6; 7 8 9]
subset = arr_2d[1:2:end, 1:2:end] # প্রথম দুই রো এবং কলামের মধ্যে প্রতি দ্বিতীয় উপাদান
println(subset) # আউটপুট: [1 3; 4 6]এখানে, 1:2:end স্টেপ সাইজ ব্যবহার করে প্রতিটি দ্বিতীয় উপাদান নির্বাচিত হচ্ছে।
সারসংক্ষেপ
- Multi-dimensional arrays জুলিয়া ভাষায় একাধিক মাত্রার (dimension) ডেটা সংরক্ষণ করতে ব্যবহৃত হয়। এটি ২-ডি, ৩-ডি বা আরও উচ্চ মাত্রার অ্যারে তৈরি করতে সাহায্য করে।
- Slicing হল অ্যারের নির্দিষ্ট অংশ নির্বাচন করার পদ্ধতি। আপনি রো, কলাম বা কোন নির্দিষ্ট অংশে কাজ করতে পারেন।
- Indexing এবং Step Sizes আপনাকে আরও নমনীয়ভাবে অ্যারের নির্দিষ্ট উপাদান নির্বাচন করতে সাহায্য করে।
এই ফিচারগুলো ডেটা সায়েন্স, গাণিতিক বিশ্লেষণ এবং বৈজ্ঞানিক গবেষণায় অত্যন্ত গুরুত্বপূর্ণ, যেখানে বড় ডেটাসেট এবং বহুমাত্রিক ডেটার প্রক্রিয়াজাতকরণ প্রয়োজন।
Dictionaries (অথবা Hash Maps) হল একটি শক্তিশালী ডেটা স্ট্রাকচার যা key-value পেয়ার হিসেবে ডেটা সংরক্ষণ করে। প্রতিটি key এর সাথে একটি value যুক্ত থাকে, এবং আপনি একটি key ব্যবহার করে সংশ্লিষ্ট value অ্যাক্সেস করতে পারেন। জুলিয়া ভাষায় Dictionaries ব্যবহার করা খুবই সহজ এবং তাদের ব্যবহার বিভিন্ন ধরনের ডেটা প্রক্রিয়া করতে সাহায্য করে।
১. Dictionary ডিক্লারেশন
জুলিয়া ভাষায় Dictionary তৈরি করতে Dict() ফাংশন ব্যবহার করা হয়। একটি Dictionary-তে key এবং value পেয়ারগুলো সংরক্ষিত থাকে।
Dictionary ডিক্লারেশন উদাহরণ
# একটি সিম্পল Dictionary তৈরি করা
d = Dict("name" => "Alice", "age" => 25, "city" => "Dhaka")
println(d) # আউটপুট: Dict("name" => "Alice", "age" => 25, "city" => "Dhaka")এখানে, name, age, এবং city হল key, এবং "Alice", 25, এবং "Dhaka" হল তাদের সংশ্লিষ্ট value।
Key-value পেয়ার ইনিশিয়ালাইজেশন
- key এবং value এর মধ্যে
=>চিহ্ন ব্যবহার করা হয়। - key হতে পারে যেকোনো ধরনের (যেমন string, integer, symbol), এবং value হতে পারে যেকোনো ধরনের ডেটা (যেমন string, integer, float, array ইত্যাদি)।
২. Dictionary এর ম্যানিপুলেশন
Dictionary Manipulation দ্বারা বোঝানো হচ্ছে কীভাবে একটি Dictionary তে নতুন key-value পেয়ার যোগ করা, বিদ্যমান key-value পেয়ার পরিবর্তন করা বা key-value পেয়ার মুছে ফেলা।
1. নতুন Key-Value পেয়ার যোগ করা
Dictionary তে নতুন key-value পেয়ার যোগ করার জন্য সহজেই [] ব্যবহার করা যেতে পারে।
# নতুন key-value পেয়ার যোগ করা
d["email"] = "alice@example.com"
println(d) # আউটপুট: Dict("name" => "Alice", "age" => 25, "city" => "Dhaka", "email" => "alice@example.com")এখানে "email" একটি নতুন key এবং "alice@example.com" একটি value হিসেবে যোগ করা হয়েছে।
2. একটি Key-Value পেয়ার পরিবর্তন করা
একটি Dictionary তে বিদ্যমান key এর মান পরিবর্তন করতে সরাসরি key এর মাধ্যমে নতুন value অ্যাসাইন করা যায়।
# Key-value পেয়ার পরিবর্তন করা
d["age"] = 30
println(d) # আউটপুট: Dict("name" => "Alice", "age" => 30, "city" => "Dhaka", "email" => "alice@example.com")এখানে, "age" এর value পরিবর্তন করে 30 করা হয়েছে।
3. একটি Key-Value পেয়ার মুছে ফেলা
Dictionary থেকে একটি key-value পেয়ার মুছে ফেলার জন্য pop!() ফাংশন ব্যবহার করা হয়।
# একটি Key-value পেয়ার মুছে ফেলা
pop!(d, "city") # "city" key এবং তার সংশ্লিষ্ট value মুছে ফেলা হবে
println(d) # আউটপুট: Dict("name" => "Alice", "age" => 30, "email" => "alice@example.com")এখানে, "city" key এবং তার value "Dhaka" মুছে ফেলা হয়েছে।
4. Dictionary তে Key বা Value অ্যাক্সেস করা
একটি Dictionary তে বিদ্যমান key এর মাধ্যমে তার সংশ্লিষ্ট value অ্যাক্সেস করা যায়।
# Key-value অ্যাক্সেস করা
println(d["name"]) # আউটপুট: Alice
println(d["age"]) # আউটপুট: 30এখানে, "name" এবং "age" keys ব্যবহার করে তাদের সংশ্লিষ্ট value গুলি অ্যাক্সেস করা হয়েছে।
5. Dictionary তে সমস্ত Key এবং Value দেখা
Dictionary তে সমস্ত keys এবং values দেখতে keys() এবং values() ফাংশন ব্যবহার করা হয়।
# সমস্ত Key দেখতে
println(keys(d)) # আউটপুট: Dict{String, Any}("name", "age", "email")
# সমস্ত Value দেখতে
println(values(d)) # আউটপুট: Dict{String, Any}("Alice", 30, "alice@example.com")৩. Dictionary এর অন্যান্য অপারেশন
1. Dictionary এর আকার জানা
Dictionary এর মধ্যে মোট কতগুলি key-value পেয়ার আছে, তা জানার জন্য length() ফাংশন ব্যবহার করা হয়।
println(length(d)) # আউটপুট: 3 (যেহেতু তিনটি key-value পেয়ার অবশিষ্ট আছে)2. একটি Key এর অস্তিত্ব পরীক্ষা করা
Dictionary তে কোনো নির্দিষ্ট key রয়েছে কি না, তা পরীক্ষা করতে in অপারেটর ব্যবহার করা হয়।
println("name" in d) # আউটপুট: true
println("city" in d) # আউটপুট: falseএখানে "name" key বিদ্যমান, তবে "city" key মুছে ফেলা হয়েছে।
3. Dictionary এর সমস্ত পেয়ার দেখতে
Dictionary এর সমস্ত key-value পেয়ার দেখতে pairs() ফাংশন ব্যবহার করা হয়।
for (k, v) in pairs(d)
println("$k => $v")
endআউটপুট:
name => Alice
age => 30
email => alice@example.comএখানে, pairs(d) সকল key-value পেয়ার প্রদর্শন করেছে।
সারসংক্ষেপ
- Dictionaries হল একটি শক্তিশালী ডেটা স্ট্রাকচার যা key-value পেয়ার হিসেবে ডেটা সংরক্ষণ করে এবং আপনাকে দ্রুতভাবে মান অ্যাক্সেস করতে সহায়ক হয়।
- key এবং value এর মধ্যে
=>চিহ্ন ব্যবহার করা হয় এবং ফাংশনDict()এর মাধ্যমে Dictionary তৈরি করা হয়। - Dictionaries এ key-value পেয়ার যোগ, পরিবর্তন, এবং মুছে ফেলা যায়।
- আপনি key এর মাধ্যমে value অ্যাক্সেস করতে পারেন এবং keys(), values(), length(), in অপারেটর ইত্যাদি দিয়ে Dictionary ম্যানিপুলেশন করতে পারেন।
Dictionaries জুলিয়া ভাষায় ডেটা সংরক্ষণের জন্য অত্যন্ত কার্যকরী এবং এটি বিভিন্ন ক্ষেত্রে যেমন ডেটাবেস স্টোরেজ, তথ্য বিশ্লেষণ, এবং নেটওয়ার্ক ডেটা প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়।
Read more