আড্ডায় ndarray এবং অ্যারের মধ্যে পার্থক্য কি?


240

নম্পি ndarrayএবং এর arrayমধ্যে পার্থক্য কী ? এবং আমি নমপি উত্স কোডটিতে প্রয়োগগুলি কোথায় পাব?

উত্তর:


220

numpy.arrayএটি তৈরির জন্য কেবল একটি সুবিধাজনক ফাংশন ndarray; এটি নিজেই কোনও শ্রেণি নয়।

আপনি ব্যবহার করে একটি অ্যারেও তৈরি করতে পারেন numpy.ndarrayতবে এটি প্রস্তাবিত উপায় নয়। এর ডাস্ট্রিং থেকে numpy.ndarray:

অ্যারেগুলি ব্যবহার করে তৈরি করা উচিত array, zerosবা empty... এখানে প্রদত্ত প্যারামিটারগুলি ndarray(...)অ্যারে ইনস্ট্যান্ট করার জন্য নিম্ন-স্তরের পদ্ধতি ( ) নির্দেশ করে।

বাস্তবায়নের বেশিরভাগ মাংস সি কোডে, এখানে মাল্টিয়ারেতে রয়েছে তবে আপনি এখানে নাদারের ইন্টারফেসগুলি দেখা শুরু করতে পারেন:

https://github.com/numpy/numpy/blob/master/numpy/core/numeric.py


1
আমি মনে করি অ্যারে ()টি অ্যারে_জেটারে () এ কোর / এসসিআর / মাল্টিআরে / মেধাবী।
flxb

6
যদি আপনি ভুলে যান যে np.arrayএটি কোনও শ্রেণি নয়, তবে আমি প্রায়শই করি তবে এটি আপনাকে কামড় দিতে পারে। x = np.array([1,2.1,3]) if isinstance(x,np.array): # will give you a TypeError
স্টিভ এল

4
এখনও কোন ক্লু নেই কেন নাদারের ব্যবহার এড়ানো উচিত? কোজ এটি নিম্ন-স্তরের?
গ্যাব্রিয়েলচু

@ এফএলএক্সবি: না, array_getarrayএটি বাস্তবায়ন numpy.ndarray.__array__numpy.arrayআরম্ভ করা হয় _array_fromobjectঅন্তত বর্তমান বাস্তবায়নের।
ব্যবহারকারী 2357112 13:52 এ মনিকে

2
তাহলে এটি সুপারিশ করা হয় না কেন?
NoName


31

Numpy.array এবং numpy.ndarray এর মধ্যে পার্থক্য দেখানোর জন্য উদাহরণ কোডের কয়েকটি লাইন

ওয়ার্ম আপ ধাপ: একটি তালিকা তৈরি করুন

a = [1,2,3]

প্রকারটি পরীক্ষা করুন

print(type(a))

তুমি পাবে

<class 'list'>

Np.array ব্যবহার করে একটি তালিকা তৈরি করুন (তালিকা থেকে)

a = np.array(a)

অথবা, আপনি সরাসরি ওয়ার্ম আপ ধাপটি এড়িয়ে যেতে পারেন

a = np.array([1,2,3])

প্রকারটি পরীক্ষা করুন

print(type(a))

তুমি পাবে

<class 'numpy.ndarray'>

যা আপনাকে নমপি অ্যারের প্রকারটি numpy.ndarray বলে

আপনি প্রকারটি পরীক্ষা করে দেখতে পারেন

isinstance(a, (np.ndarray))

এবং আপনি পাবেন

True

নিম্নলিখিত দুটি লাইনের একটি আপনাকে একটি ত্রুটি বার্তা দেবে

np.ndarray(a)                # should be np.array(a)
isinstance(a, (np.array))    # should be isinstance(a, (np.ndarray))

4

numpy.ndarray()একটি শ্রেণি, অন্যদিকে numpy.array()তৈরি করার পদ্ধতি / ফাংশন ndarray

নকল নথিতে যদি আপনি ndarrayশ্রেণি থেকে একটি অ্যারে তৈরি করতে চান তবে আপনি উদ্ধৃত হিসাবে 2 টি উপায়ে এটি করতে পারেন:

1- ব্যবহার array(), zeros()বা empty()পদ্ধতি: অ্যারেগুলির এরে, শূন্য ব্যবহার বা খালি নির্মাণ করা উচিত (নিচের অধ্যায় দেখুন দেখুন)। এখানে প্রদত্ত প্যারামিটারগুলি ndarray(…)অ্যারে ইনস্ট্যান্ট করার জন্য নিম্ন-স্তরের পদ্ধতি ( ) নির্দেশ করে।

2- ndarrayসরাসরি শ্রেণি থেকে : অ্যারে ব্যবহারের দুটি পদ্ধতি রয়েছে যা ব্যবহার করে __new__: যদি বাফার না হয় তবে কেবল আকার, dtype এবং ক্রম ব্যবহার করা হয়। বাফার যদি বাফার ইন্টারফেসটি প্রকাশ করে এমন একটি বস্তু হয় তবে সমস্ত কীওয়ার্ড ব্যাখ্যা করা হয়।

নীচের উদাহরণটি একটি এলোমেলো অ্যারে দেয় কারণ আমরা বাফার মান বরাদ্দ করি নি:

np.ndarray(shape=(2,2), dtype=float, order='F', buffer=None)

array([[ -1.13698227e+002,   4.25087011e-303],
       [  2.88528414e-306,   3.27025015e-309]])         #random

আরেকটি উদাহরণ হ'ল বাফার উদাহরণে অ্যারে অবজেক্টটি অর্পণ করা:

>>> np.ndarray((2,), buffer=np.array([1,2,3]),
...            offset=np.int_().itemsize,
...            dtype=int) # offset = 1*itemsize, i.e. skip first element
array([2, 3])

উপরের উদাহরণ থেকে আমরা লক্ষ্য করেছি যে আমরা "বাফার" কে একটি তালিকা অর্পণ করতে পারি না এবং বাফারের জন্য ন্যাডেরে অবজেক্টটি ফিরিয়ে দিতে আমাদের numpy.array () ব্যবহার করতে হয়েছিল

উপসংহার: numpy.array()আপনি যদি কোনও numpy.ndarray()বস্তু তৈরি করতে চান তবে ব্যবহার করুন "


0

আমি মনে করি np.array()আপনি কেবল সি তৈরি করতে পারবেন যদিও আপনি অর্ডার উল্লেখ করেছেন, যখন আপনি np.isfortran()এটি ব্যবহার করে পরীক্ষা করেন এটি মিথ্যা বলে। তবে np.ndarrray()আপনি যখন অর্ডার নির্দিষ্ট করে তখন তা সরবরাহ করা অর্ডারের ভিত্তিতে তৈরি করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.