NumPy অ্যারে তৈরি করার অনেক পদ্ধতি রয়েছে। NumPy একটি ndarray-কে 1D অ্যারে-এ রূপান্তর করার জন্য দুটি ভিন্ন পদ্ধতি প্রদান করে: flatten() মেথড এবং ravel() মেথড।
উদাহরণ
# প্রয়োজনীয় লাইব্রেরি ইমপোর্ট করুন import numpy as np # একটি লিস্ট থেকে অ্যারে তৈরি করুন arr = np.array([(2, 7, 3, 4), (5, 6, 9, 1)]) # flatten আউটপুট print(arr.flatten()) # ravel আউটপুট print(arr.ravel())
আউটপুট
[2 7 3 4 5 6 9 1] [2 7 3 4 5 6 9 1]
উপরে দেখা যাচ্ছে যে দুটি ফাংশনই একই ফলাফল ফেরত দেয়, তখন প্রশ্ন ওঠে: একই কাজের জন্য দুটি মেথড কেন?
নিচে flatten() এবং ravel() মেথডগুলির মূল পার্থক্যগুলো দেওয়া হলো:
arr.ravel()
মূল অ্যারের শুধুমাত্র রেফারেন্স ফেরত দেয়
উপরের অ্যারে (arr) মডিফাই করলে মূল অ্যারের মানও পরিবর্তিত হয়
ravel মেথড কোনো মেমরি অকুপাই করে না, তাই flatten()-এর চেয়ে দ্রুত
Ravel একটি লাইব্রেরি-লেভেল ফাংশন
arr.flatten()
অ্যারের একটি কপি ফেরত দেয়
উপরের অ্যারে (arr) মডিফাই করলে মূল অ্যারের মান পরিবর্তিত হয় না
flatten() মেমরি অকুপাই করে, তাই ravel()-এর চেয়ে কিছুটা ধীর
এটি একটি ndarray অবজেক্টের মেথড
বিশদ উদাহরণ
import numpy as np
# একটি NumPy অ্যারে তৈরি করুন
arr = np.array([(1,2,3,4), (3,1,4,2)])
# মূল অ্যারে প্রিন্ট করুন
print("মূল অ্যারে:\n", arr)
# অ্যারের ডাইমেনশন এবং টাইপ চেক করুন
print("মূল অ্যারের ডাইমেনশন: %d \n মূল অ্যারের টাইপ: %s" % (arr.ndim, type(arr)))
print("\nRavel মেথড থেকে আউটপুট:\n")
# ndarray কে 1D অ্যারে-এ রূপান্তর করুন
b_arr = arr.ravel()
# Ravel মূল অ্যারের একটি ভিউ পাস করে
print(b_arr)
b_arr[0] = 1000
print(b_arr)
# লক্ষ্য করুন: মূল অ্যারে 'arr'-র arr[0][0]-ও 1000 হয়ে গেছে
print(arr)
# ডাইমেনশন (১) এবং টাইপ চেক করুন
print("অ্যারের ডাইমেনশন: %d \n অ্যারের টাইপ: %s" % (b_arr.ndim, type(b_arr)))
print("\nFlatten মেথড থেকে আউটপুট:\n")
# ndarray কে 1D অ্যারে-এ রূপান্তর করুন
c_arr = arr.flatten()
# Flatten মূল অ্যারের একটি কপি পাস করে
print(c_arr)
c_arr[0] = 0
print(c_arr)
# লক্ষ্য করুন: c_arr-র মান পরিবর্তন করলে মূল অ্যারে 'arr'-এ কোনো প্রভাব পড়ে না
print(arr)
print("অ্যারের ডাইমেনশন->%d \n অ্যারের টাইপ->%s" % (c_arr.ndim, type(c_arr)))
আউটপুট
মূল অ্যারে: [[1 2 3 4] [3 1 4 2]] মূল অ্যারের ডাইমেনশন: 2 মূল অ্যারের টাইপ: <class 'numpy.ndarray'> Ravel মেথড থেকে আউটপুট: [1 2 3 4 3 1 4 2] [1000 2 3 4 3 1 4 2] [[1000 2 3 4] [3 1 4 2]] অ্যারের ডাইমেনশন: 1 অ্যারের টাইপ: <class 'numpy.ndarray'> Flatten মেথড থেকে আউটপুট: [1000 2 3 4 3 1 4 2] [0 2 3 4 3 1 4 2] [[1000 2 3 4] [3 1 4 2]] অ্যারের ডাইমেনশন->1 অ্যারের টাইপ-><class 'numpy.ndarray'>