নম্পি ম্যাট্রিকগুলি কঠোরভাবে দ্বিমাত্রিক, অন্যদিকে নিম্পী অ্যারে (ন্যাটারে) এন-ডাইমেনশনাল। ম্যাট্রিক্স অবজেক্টগুলি নাদারের একটি সাবক্লাস, তাই তারা নাদারেরির সমস্ত বৈশিষ্ট্য এবং পদ্ধতির উত্তরাধিকারী।
নপি ম্যাট্রিক্সের প্রধান সুবিধা হ'ল তারা ম্যাট্রিক্স গুণনের জন্য একটি সুবিধাজনক স্বরলিপি প্রদান করে: যদি ক এবং বি ম্যাট্রিক হয় তবে a*bতাদের ম্যাট্রিক্স পণ্য।
import numpy as np
a = np.mat('4 3; 2 1')
b = np.mat('1 2; 3 4')
print(a)
# [[4 3]
# [2 1]]
print(b)
# [[1 2]
# [3 4]]
print(a*b)
# [[13 20]
# [ 5 8]]
অন্যদিকে, পাইথন ৩.৫ হিসাবে, নুমপি @অপারেটরটি ব্যবহার করে ইনফিক্স ম্যাট্রিক্সের গুণকে সমর্থন করে , তাই আপনি পাইথন> = 3.5 এ ম্যাট্রিক্স গুণনের একই সুবিধা অর্জন করতে পারবেন n
import numpy as np
a = np.array([[4, 3], [2, 1]])
b = np.array([[1, 2], [3, 4]])
print(a@b)
# [[13 20]
# [ 5 8]]
উভয় ম্যাট্রিক্স অবজেক্ট এবং নাদারেরাই .Tট্রান্সপোজ ফিরিয়ে দিতে হবে, তবে ম্যাট্রিক্স অবজেক্টে কনজুগেট .Hট্রান্সপোজ এবং .Iবিপরীতের জন্যও রয়েছে।
বিপরীতে, নপি অ্যারে নিয়মিতভাবে নিয়ম মেনে চলে যে অপারেশনগুলি উপাদান অনুসারে প্রয়োগ করা হয় (নতুন @অপারেটর ব্যতীত )। সুতরাং, যদি aএবং bনমলি অ্যারে হয়, তবে a*bউপাদান উপাদান অনুসারে গুণিত করে অ্যারে গঠিত হয়:
c = np.array([[4, 3], [2, 1]])
d = np.array([[1, 2], [3, 4]])
print(c*d)
# [[4 6]
# [6 4]]
ম্যাট্রিক্স গুণনের ফলাফল পেতে, আপনি np.dot(বা @পাইথন> = 3.5 তে, উপরে বর্ণিত হিসাবে) ব্যবহার করুন:
print(np.dot(c,d))
# [[13 20]
# [ 5 8]]
**অপারেটর এছাড়াও ভিন্নভাবে আচরণ করবে:
print(a**2)
# [[22 15]
# [10 7]]
print(c**2)
# [[16 9]
# [ 4 1]]
যেহেতু aএকটি ম্যাট্রিক্স a**2তাই ম্যাট্রিক্স পণ্যটি প্রদান করে a*a। যেহেতু cএকটি নাদারের, তাই c**2প্রতিটি উপাদান স্কোয়ার এলিমেন্টের সাথে একটি ন্যাডেরিকে প্রদান করে।
ম্যাট্রিক্স অবজেক্ট এবং নাদারেরেগুলির সাথে অন্যান্য প্রযুক্তিগত পার্থক্য রয়েছে ( np.ravelআইটেম নির্বাচন এবং ক্রম আচরণ) এর সাথে করণীয় ।
নাম্পার অ্যারেগুলির প্রধান সুবিধা হ'ল তারা দ্বিমাত্রিক ম্যাট্রিক্সের চেয়ে বেশি সাধারণ । আপনি যখন ত্রি-মাত্রিক অ্যারে চান তখন কী হয়? তারপরে আপনাকে ম্যাট্রিক্স অবজেক্ট নয়, একটি নাদারের ব্যবহার করতে হবে। সুতরাং, ম্যাট্রিক্স অবজেক্টগুলি ব্যবহার করা শেখা আরও কাজ - আপনাকে ম্যাট্রিক্স অবজেক্ট ক্রিয়াকলাপ, এবং নাদার্রে ক্রিয়াকলাপ শিখতে হবে।
ম্যাট্রিক এবং অ্যারে উভয়কেই মিশ্রিত করে এমন একটি প্রোগ্রাম লেখা আপনার জীবনকে কঠিন করে তোলে কারণ আপনার ভেরিয়েবলগুলি কী ধরণের অবজেক্টের তা আপনাকে ট্র্যাক করে রাখতে হবে, পাছে গুণগুলি এমন কোনও প্রত্যাশাকে প্রত্যাশা করে না যা প্রত্যাশা করে না।
বিপরীতে, আপনি যদি পুরোপুরি ndarrays এর সাথে লেগে থাকেন তবে কিছুটা আলাদা ফাংশন / স্বরলিপি বাদ দিয়ে আপনি ম্যাট্রিক্স অবজেক্টগুলি আরও কিছু করতে পারেন এবং আরও অনেক কিছু করতে পারেন।
আপনি যদি নম্পপি ম্যাট্রিক্স প্রোডাক্ট নোটেশনের ভিজ্যুয়াল আপিল (যা পাইথনের ন্যাডেরায়> = 3.5 এর সাথে প্রায় মার্জিতভাবে অর্জন করা যায়) ছেড়ে দিতে রাজি হন, তবে আমি মনে করি নুমপি অ্যারেগুলি অবশ্যই যাওয়ার উপায় definitely
পুনশ্চ. অবশ্যই, আপনি সত্যিই যেহেতু অন্যান্য খরচে একটি বেছে নিন, হবে না np.asmatrixএবং np.asarrayআপনি অন্যান্য এক রূপান্তর করার অনুমতি দেয় (যেমন অ্যারে 2-মাত্রিক হিসাবে দীর্ঘ)।
সেখানে NumPy মধ্যে পার্থক্য একটি সারসংক্ষেপ হয় arraysবনাম NumPy matrixস্প্যানিশ ভাষায় এখানে ।