কম্পিউটার

Numpy-এ Flatten() এবং Ravel() এর মধ্যে পার্থক্য


একটি নমপি অ্যারে তৈরি করার অনেক উপায় আছে। Numpy একটি ndarray 1Darray তে রূপান্তর করার দুটি ভিন্ন ধরণের উপায় সরবরাহ করে:যেটি flatten() পদ্ধতি ব্যবহার করে এবং অন্যটি ravel() পদ্ধতি ব্যবহার করে৷

উদাহরণ

#Import required library, numpy
import numpy as np
#create an array from a list
arr = np.array( [ (2, 7, 3, 4), (5, 6, 9, 1)])
#flatten_output
print(arr.flatten())
#ravel_output
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 হল একটি লাইব্রেরি স্তরের ফাংশন

arr.flatten()

  • অ্যারে(arr) এর একটি আসল কপি ফেরত দেয়।

  • উপরের অ্যারে(arr) পরিবর্তন করলে, মূল অ্যারের মান পরিবর্তন হবে না।

  • যেহেতু flatten() মেমরি দখল করে, flatten() ravel()

    থেকে একটু ধীর
  • এটি একটি ndarray অবজেক্টের একটি পদ্ধতি।

উদাহরণ

#Import required library, numpy
import numpy as np
# Create a numpy array, arr
arr = np.array([(1,2,3,4),(3,1,4,2)])
# Let's print the array arr
print ("Original array:\n ", arr)
#print(arr)
# To check the dimension of array (dimension =2) and type is numpy.ndarray
print ("Dimension of original array: %d \n Type of original array: %s" % (arr.ndim,type(arr)))
print("\nOutput from ravel method: \n")
# Convert nd array to 1D array
b_arr = arr.ravel()
# Ravel only passes a view of original array to array 'b_arr'
print(b_arr)
b_arr[0]=1000
print(b_arr)
# Note here that value of original array 'arr' at also arr[0][0] becomes 1000
print(arr)
# Just to check the dimension i.e. 1 and type is same numpy.ndarray
print ("Dimension of array: %d \n Type of array: %s" % (b_arr.ndim,type(b_arr)))
print("\nOutput from flatten method: \n")
# Convert nd array to 1D array
c_arr = arr.flatten()
# Flatten passes copy of original array to 'c_arr'
print(c_arr)
c_arr[0]=0
print(c_arr)
# Note that by changing value of c_arr there is no affect on value of original array 'arr'
print(arr)
print ("Dimension of array->%d \n Type of array->%s" % (c_arr.ndim,type(c_arr)))

আউটপুট

Original array:
[[1 2 3 4]
[3 1 4 2]]
Dimension of original array: 2
Type of original array: <class 'numpy.ndarray'>
Output from ravel method:
[1 2 3 4 3 1 4 2]
[1000 2 3 4 3 1 4 2]
[[1000 2 3 4]
[ 3 1 4 2]]
Dimension of array: 1
Type of array: <class 'numpy.ndarray'>
Output from flatten method:
[1000 2 3 4 3 1 4 2]
[0 2 3 4 3 1 4 2]
[[1000 2 3 4]
[ 3 1 4 2]]
Dimension of array->1
Type of array-><class 'numpy.ndarray'>

  1. উইন্ডোজ এক্সপি এবং উইন্ডোজ 7 এর মধ্যে শীর্ষ 10টি পার্থক্য

  2. ক্রোমিয়াম এবং ক্রোমের মধ্যে শীর্ষ 12টি পার্থক্য

  3. Agg এবং কায়রোর মধ্যে Matplotlib ব্যাকএন্ড পার্থক্য

  4. Python 2.7.x এবং Python 3.x এর মধ্যে মূল পার্থক্যগুলি কী কী?