উত্তর:
যেহেতু অন্যান্য প্রশ্নগুলি এই সম্পর্কে জিজ্ঞাসা করা হয় asanyarray
বা অন্য অ্যারে তৈরির রুটিনগুলিতে পুনর্নির্দেশ করা হচ্ছে , তাই তাদের প্রতিটি কি করে তার সংক্ষিপ্ত সংক্ষিপ্ত বিবরণ যুক্তিযুক্ত সম্ভবত worth
অনুলিপিগুলি মূলত কপির হিসাবে নতুন অ্যারে তৈরি করার বিরোধী হিসাবে ইনপুটটি অপরিবর্তিত অবস্থায় ফিরিয়ে আনতে হবে about
array
কখন অনুলিপি করতে হবে তা নির্ধারণের জন্য পতাকা সহ, বিভিন্ন বিকল্পের (অন্যান্য ফাংশনগুলির প্রায়শই এর চারপাশে পাতলা মোড়ক দেওয়া) অফার করে। একটি সম্পূর্ণ ব্যাখ্যা ডক্স হিসাবে ঠিক যতক্ষণ সময় নেবে ( অ্যারে ক্রিয়েশন দেখুন , তবে সংক্ষেপে, এখানে কয়েকটি উদাহরণ রয়েছে:
ধরুন a
একটি ndarray
, এবং m
এটি একটি matrix
এবং তাদের উভয়ের একটির dtype
রয়েছে float32
:
np.array(a)
এবং np.array(m)
উভয়ই অনুলিপি করবে, কারণ এটি পূর্বনির্ধারিত আচরণ।np.array(a, copy=False)
এবং np.array(m, copy=False)
অনুলিপি করবে m
কিন্তু না a
, কারণ m
এটি একটি নয় ndarray
।np.array(a, copy=False, subok=True)
এবং np.array(m, copy=False, subok=True)
কোনওটি অনুলিপি করবে না, কারণ m
এটি একটি matrix
, যা একটি সাবক্লাস ndarray
।np.array(a, dtype=int, copy=False, subok=True)
উভয়ই অনুলিপি করবে, কারণ এটি dtype
উপযুক্ত নয়।array
অনুলিপি ঘটে যখন অন্যান্য ফাংশনগুলির বেশিরভাগটি নিয়ন্ত্রণের চারপাশে পাতলা মোড়ক থাকে:
asarray
: ইনপুট uncopied ফেরত পাঠানো হবে iff এটি একটি সামঞ্জস্যপূর্ণ ndarray
( copy=False
)।asanyarray
: ইনপুট uncopied ফেরত পাঠানো হবে iff এটি একটি সামঞ্জস্যপূর্ণ ndarray
বা মত উপশ্রেণী matrix
( copy=False
, subok=True
)।ascontiguousarray
: যদি এটি ndarray
সি এর সাথে সামঞ্জস্যপূর্ণ উপযুক্ত হয় ( copy=False
, order='C')
।asfortranarray
: ইনপুটটি অনির্ধারিতভাবে ফিরিয়ে দেওয়া হবে যদি এটি ফোর্ট্রান ক্রমাগত ndarray
অর্ডার ( copy=False
, order='F'
) এর সাথে সামঞ্জস্যপূর্ণ ।require
: যদি ইনপুটটি নির্দিষ্ট প্রয়োজনীয়তার স্ট্রিংয়ের সাথে সামঞ্জস্য হয় তবে তা অনাবৃত ফিরে আসবে।copy
: ইনপুটটি সর্বদা অনুলিপি করা হয়।fromiter
: ইনপুটটিকে পুনরাবৃত্ত হিসাবে বিবেচনা করা হয় (সুতরাং, যেমন, আপনি পুনরাবৃত্তকারীগুলির object
সাথে অ্যারের পরিবর্তে পুনরাবৃত্তকারীগুলির উপাদানগুলি থেকে অ্যারে তৈরি করতে পারেন ); সর্বদা অনুলিপি করা।এছাড়াও সুবিধামূলক ফাংশন রয়েছে asarray_chkfinite
(যেমন একই অনুলিপি করার নিয়ম যেমন রয়েছে asarray
তবে তবে কোনওটি বা মান ValueError
রয়েছে তবে উত্থাপিত হয় ), এবং সাবক্লাসের জন্য নির্মাণকারী যেমন রেকর্ড অ্যারেগুলির মতো বা বিশেষ ক্ষেত্রে রয়েছে, এবং অবশ্যই প্রকৃত নির্মাণকারী (যা আপনাকে সরাসরি অ্যারে তৈরি করতে দেয়) একটি বাফারের উপরে অগ্রসর হওয়া)।nan
inf
matrix
ndarray
এর সংজ্ঞাটিasarray
হ'ল:
def asarray(a, dtype=None, order=None):
return array(a, dtype, copy=False, order=order)
সুতরাং এটির মতো array
এটির চেয়ে কম বিকল্প রয়েছে এবং copy=False
। array
হয়েছে copy=True
ডিফল্টরূপে।
মূল পার্থক্য হ'ল array
(ডিফল্টরূপে) অবজেক্টের একটি অনুলিপি তৈরি asarray
করবে , যখন না প্রয়োজন হবে না।
array([1, 2, 3])
বা asarray([1, 2, 3])
?
[1, 2, 3]
একটি পাইথন তালিকা, সুতরাং ডেটা তৈরি করার জন্য অবশ্যই অনুলিপি তৈরি করতে হবে ndarary
। সুতরাং এর np.array
পরিবর্তে সরাসরি ব্যবহার করুন np.asarray
যা copy=False
প্যারামিটারটি প্রেরণ করবে np.array
। copy=False
যদি একটি কপি যেমন এই ক্ষেত্রে হবে তৈরি করা আবশ্যক উপেক্ষা করা হয়। আপনি যদি %timeit
আইপিথনে দুটি ব্যবহার করে বেঞ্চমার্ক করেন আপনি ছোট তালিকার জন্য একটি পার্থক্য দেখতে পাবেন, তবে আপনি বড় তালিকার জন্য যা ব্যবহার করেন তা খুব কমই গুরুত্বপূর্ণ ly
np.asanyarray
?
asarray
সর্বদা একটি ফেরত দেয় ndarray
। asanyarray
এটি ndarray
যদি এটি পাস করা হয় তবে একটি সাবক্লাস ফেরত দেবে । উদাহরণস্বরূপ, একটি np.matrix
হল একটি সাবক্লাস ndarray
। সুতরাং np.asanyarray(np.matrix(...))
একই ম্যাট্রিক্স প্রদান করে, যেখানে ম্যাট্রিক্সকে একটিতে np.asarray(np.matrix(...))
রূপান্তরিত করা হয় ndarray
।
পার্থক্যটি এই উদাহরণ দ্বারা প্রদর্শিত হতে পারে:
একটি ম্যাট্রিক্স উত্পন্ন
>>> A = numpy.matrix(numpy.ones((3,3)))
>>> A
matrix([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])
numpy.array
পরিবর্তন করতে ব্যবহার করুন A
। আপনি কোনও অনুলিপি পরিবর্তন করছেন বলে কাজ করে না
>>> numpy.array(A)[2]=2
>>> A
matrix([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])
numpy.asarray
পরিবর্তন করতে ব্যবহার করুন A
। এটা কাজ কারণ আপনার পরিবর্তন হয় A
নিজেই
>>> numpy.asarray(A)[2]=2
>>> A
matrix([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 2., 2., 2.]])
আশাকরি এটা সাহায্য করবে!
পার্থক্যগুলির ডকুমেন্টেশনে array
এবং স্পষ্টভাবে উল্লেখ করা হয়েছে asarray
। পার্থক্যগুলি আর্গুমেন্ট তালিকায় থাকে এবং সুতরাং সেই পরামিতিগুলির উপর নির্ভর করে ফাংশনের ক্রিয়া।
ফাংশন সংজ্ঞা:
numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
এবং
numpy.asarray(a, dtype=None, order=None)
নিম্নলিখিত আর্গুমেন্ট ঐ যে প্রেরণ করা হতে পারে array
এবং না asarray
যেমন ডকুমেন্টেশনে উল্লেখ করেছে:
অনুলিপি: বুল, alচ্ছিক যদি সত্য হয় (ডিফল্ট), তবে অবজেক্টটি অনুলিপি করা হয় । অন্যথায়, অনুলিপি কেবল তখনই
__array__
অনুলিপি করা হয় যখন আপত্তি কোনও নেস্টেড ক্রম হয়, বা অন্য কোনও প্রয়োজনীয়তা (টাইপ, অর্ডার ইত্যাদি) পূরণের জন্য যদি অনুলিপি প্রয়োজন হয়।সাবোক: বুল, alচ্ছিক যদি সত্য হয় তবে সাব-ক্লাসগুলি পাস করা হবে , অন্যথায় ফিরে আসা অ্যারেটি বেস-ক্লাসের অ্যারে (ডিফল্ট) হতে বাধ্য হবে।
ndmin: int, alচ্ছিক ফলাফল অ্যারে হওয়া উচিত ন্যূনতম মাত্রার পরিমাণ নির্দিষ্ট করে Spec এই প্রয়োজনীয়তাটি পূরণের জন্য প্রয়োজনীয়রা আকারে প্রাক-পেনড করা হবে।
এখানে একটি সহজ উদাহরণ যা পার্থক্যটি প্রদর্শন করতে পারে।
মূল পার্থক্যটি হ'ল অ্যারে মূল ডেটার একটি অনুলিপি তৈরি করবে এবং বিভিন্ন বস্তু ব্যবহার করে আমরা মূল অ্যারেতে ডেটা পরিবর্তন করতে পারি।
import numpy as np
a = np.arange(0.0, 10.2, 0.12)
int_cvr = np.asarray(a, dtype = np.int64)
অ্যারে (ক) এর সামগ্রীগুলি অচেনা থেকে যায় এবং তবুও, আমরা মূল অ্যারেতে সামগ্রীটি পরিবর্তন না করে অন্য কোনও অবজেক্ট ব্যবহার করে ডেটাতে যে কোনও ক্রিয়াকলাপ করতে পারি।
asarray(x)
মত array(x, copy=False)
অন্য কোনও ক্রিয়াকলাপ শেষ হওয়ার আগে asarray(x)
আপনি এটি নিশ্চিত করতে চাইলে ব্যবহার করুন x
। যদি x
ইতিমধ্যে অ্যারে হয় তবে কোনও অনুলিপি করা হবে না। এটি একটি অপ্রয়োজনীয় পারফরম্যান্স হিটের কারণ হবে না।
এখানে এমন একটি ফাংশনের উদাহরণ যা নিশ্চিত করে x
প্রথমে অ্যারেতে রূপান্তরিত হয়।
def mysum(x):
return np.asarray(x).sum()