பைதான்: NumPy உடன் வெக்டர்கள், மெட்ரிஸ்கள் மற்றும் வரிசைகள்

Python Vectors Matrices



இந்த பாடத்தில், பைத்தானில் உள்ள NumPy நூலகத்தைப் பயன்படுத்தி திசையன்கள், மெட்ரிஸ்கள் மற்றும் வரிசைகளுடன் விளையாட சில நேர்த்தியான குறிப்புகள் மற்றும் தந்திரங்களைப் பார்ப்போம். நீங்கள் தரவு அறிவியலில் தொடங்குகிறீர்கள் மற்றும் இந்த கூறுகளின் சில அறிமுக கணித கண்ணோட்டம் மற்றும் குறியீட்டில் NumPy ஐப் பயன்படுத்தி நாம் எவ்வாறு விளையாடலாம் என்றால் இந்த பாடம் ஒரு நல்ல தொடக்க புள்ளியாகும்.

திசையன்கள், மெட்ரிக்ஸ் மற்றும் வரிசைகள் போன்ற இயந்திர கற்றல் மற்றும் தரவு அறிவியலில் பெரும்பாலும் பயன்படுத்தப்படும் தரவு கட்டமைப்புகளில் செய்யப்பட வேண்டிய பல்வேறு செயல்பாடுகளைச் செய்ய NumPy நூலகம் அனுமதிக்கிறது. நிறைய இயந்திர கற்றல் குழாய்களில் பயன்படுத்தப்படும் NumPy உடன் மிகவும் பொதுவான செயல்பாடுகளை மட்டுமே காண்பிப்போம். இறுதியாக, NumPy என்பது செயல்பாடுகளைச் செய்வதற்கான ஒரு வழி என்பதை தயவுசெய்து கவனிக்கவும், எனவே, நாம் காட்டும் கணித செயல்பாடுகள் இந்த பாடத்தின் முக்கிய கவனம் மற்றும் NumPy தொகுப்பு அல்ல. ஆரம்பிக்கலாம்.







ஒரு திசையன் என்றால் என்ன?

கூகிளின் கூற்றுப்படி, ஒரு திசையன் என்பது திசையையும் அளவையும் கொண்ட ஒரு அளவு ஆகும், குறிப்பாக ஒரு புள்ளியின் இடத்தை மற்றொரு இடத்துடன் ஒப்பிடும்போது.





இயந்திர கற்றலில் வெக்டர்கள் மிக முக்கியமானவை, ஏனெனில் அவை அளவை மட்டுமல்ல, அம்சங்களின் திசையையும் விவரிக்கின்றன. பின்வரும் குறியீடு துணுக்கு மூலம் நாம் NumPy இல் ஒரு திசையனை உருவாக்கலாம்:





இறக்குமதி இறக்குமதிஎனஎ.கா

வரிசை_வெக்டர் = np.array([1,2,3])
அச்சு(வரிசை_வெக்டர்)

மேலே உள்ள குறியீடு துணுக்கில், ஒரு வரிசை திசையனை உருவாக்கினோம். நாம் ஒரு நெடுவரிசை திசையனை உருவாக்கலாம்:

இறக்குமதி இறக்குமதிஎனஎ.கா

col_vector = np.array([[1],[2],[3]])
அச்சு(col_vector)

மேட்ரிக்ஸை உருவாக்குதல்

ஒரு மேட்ரிக்ஸை இரு பரிமாண வரிசை என்று புரிந்து கொள்ள முடியும். பல பரிமாண வரிசையை உருவாக்குவதன் மூலம் நாம் NumPy உடன் ஒரு மேட்ரிக்ஸை உருவாக்கலாம்:



அணி = np.array([[1,2,3],[4,5,6],[7,8,9]])
அச்சு(அணி)

மேட்ரிக்ஸ் பல பரிமாண வரிசையைப் போலவே இருந்தாலும், மேட்ரிக்ஸ் தரவு அமைப்பு பரிந்துரைக்கப்படவில்லை இரண்டு காரணங்களால்:

  1. NumPy தொகுப்புக்கு வரும்போது வரிசை நிலையானது
  2. NumPy உடனான பெரும்பாலான செயல்பாடுகள் வரிசைகளைத் தருகின்றன, ஆனால் ஒரு அணி அல்ல

ஸ்பார்ஸ் மேட்ரிக்ஸைப் பயன்படுத்துதல்

ஞாபகப்படுத்த, மிகக் குறைவான உருப்படிகள் பூஜ்ஜியமாக இருக்கும். இப்போது, ​​தரவு செயலாக்கம் மற்றும் இயந்திர கற்றலில் ஒரு பொதுவான காட்சி மெட்ரிக்ஸை செயலாக்குகிறது, இதில் பெரும்பாலான கூறுகள் பூஜ்ஜியமாக இருக்கும். எடுத்துக்காட்டாக, யூட்யூபில் உள்ள ஒவ்வொரு வீடியோவையும் வரிசைகள் விவரிக்கும் ஒரு மேட்ரிக்ஸைக் கருதுங்கள் மற்றும் பத்திகள் ஒவ்வொரு பதிவுசெய்யப்பட்ட பயனரையும் குறிக்கும். ஒவ்வொரு மதிப்பும் பயனர் வீடியோவைப் பார்த்தாரா இல்லையா என்பதைக் குறிக்கிறது. நிச்சயமாக, இந்த மேட்ரிக்ஸில் உள்ள பெரும்பாலான மதிப்புகள் பூஜ்ஜியமாக இருக்கும். தி அரிதான மேட்ரிக்ஸுடன் நன்மை அது பூஜ்ஜியமாக இருக்கும் மதிப்புகளை சேமிக்காது. இது ஒரு பெரிய கணக்கீட்டு நன்மை மற்றும் சேமிப்பு தேர்வுமுறைக்கு வழிவகுக்கிறது.

இங்கே ஒரு தீப்பொறி அணியை உருவாக்குவோம்:

scipy இறக்குமதி குறைவாக இருந்து

original_matrix = np.array([[1,0,3],[0,0,6],[7,0,0]])
sparse_matrix = sparse.csr_matrix(அசல்_மேட்ரிக்ஸ்)
அச்சு(அரிதான_மேட்ரிக்ஸ்)

குறியீடு எவ்வாறு செயல்படுகிறது என்பதைப் புரிந்து கொள்ள, நாம் இங்கே வெளியீட்டைப் பார்ப்போம்:

மேலே உள்ள குறியீட்டில், a ஐ உருவாக்க NumPy இன் செயல்பாட்டைப் பயன்படுத்தினோம் சுருக்கப்பட்ட சிறிய வரிசை பூஜ்ஜிய அடிப்படையிலான குறியீடுகளைப் பயன்படுத்தி பூஜ்ஜியமற்ற கூறுகள் குறிப்பிடப்படும் அணி. பல்வேறு வகையான அரிதான மேட்ரிக்ஸ் உள்ளன:

  • சுருக்கப்பட்ட அரிதான நெடுவரிசை
  • பட்டியல்களின் பட்டியல்
  • விசைகளின் அகராதி

நாங்கள் இங்கே மற்ற அரிதான மெட்ரிஸ்களுக்குள் மூழ்க மாட்டோம், ஆனால் அவை ஒவ்வொன்றின் பயன்பாடு குறிப்பிட்டது மற்றும் யாரையும் 'சிறந்த' என்று அழைக்க முடியாது என்பதை அறிவோம்.

அனைத்து திசையன் கூறுகளுக்கும் செயல்பாடுகளைப் பயன்படுத்துதல்

பல திசையன் கூறுகளுக்கு ஒரு பொதுவான செயல்பாட்டை நாம் பயன்படுத்த வேண்டிய போது இது ஒரு பொதுவான சூழ்நிலை. இதை ஒரு லாம்ப்டாவை வரையறுத்து பின்னர் திசையன் மூலம் செய்யலாம். அதற்காக சில குறியீடு துணுக்குகளைப் பார்ப்போம்:

அணி = np.array([
[1,2,3],
[4,5,6],
[7,8,9]])

mul_5 = லாம்ப்டா x: x* 5
vectorized_mul_5 = np.vectorize(mul_5)

vectorized_mul_5(அணி)

குறியீடு எவ்வாறு செயல்படுகிறது என்பதைப் புரிந்து கொள்ள, நாம் இங்கே வெளியீட்டைப் பார்ப்போம்:

மேற்கண்ட குறியீடு துணுக்குகளில், திசையனின் ஒவ்வொரு உறுப்புகளையும் செயலாக்கக்கூடிய ஒரு எளிய லாம்ப்டா வரையறையை ஒரு செயல்பாடாக மாற்றுவதற்கு, NumPy நூலகத்தின் ஒரு பகுதியாக இருக்கும் வெக்டரைஸ் செயல்பாட்டைப் பயன்படுத்தினோம். வெக்டரைஸ் என்பதை கவனத்தில் கொள்ள வேண்டும் உறுப்புகள் மீது ஒரு வளையம் மேலும் இது திட்டத்தின் செயல்திறனை பாதிக்காது. NumPy கூட அனுமதிக்கிறது ஒளிபரப்பு அதாவது, மேலே உள்ள சிக்கலான குறியீட்டிற்கு பதிலாக, நாம் வெறுமனே செய்திருக்கலாம்:

அணி* 5

மற்றும் முடிவு சரியாகவே இருந்திருக்கும். நான் முதலில் சிக்கலான பகுதியை காட்ட விரும்பினேன், இல்லையெனில் நீங்கள் பிரிவை தவிர்த்திருப்பீர்கள்!

சராசரி, மாறுபாடு மற்றும் நிலையான விலகல்

NumPy மூலம், திசையன்களில் விளக்க புள்ளிவிவரங்கள் தொடர்பான செயல்பாடுகளைச் செய்வது எளிது. ஒரு திசையனின் சராசரியைக் கணக்கிடலாம்:

np. பொருள்(அணி)

ஒரு திசையனின் மாறுபாட்டைக் கணக்கிடலாம்:

np.var(அணி)

ஒரு திசையனின் நிலையான விலகலை இவ்வாறு கணக்கிடலாம்:

எ.கா. std(அணி)

கொடுக்கப்பட்ட மேட்ரிக்ஸில் மேலே உள்ள கட்டளைகளின் வெளியீடு இங்கே கொடுக்கப்பட்டுள்ளது:

மேட்ரிக்ஸை மாற்றுதல்

இடமாற்றம் என்பது மிகவும் பொதுவான செயலாகும், இது நீங்கள் மெட்ரிக்ஸால் சூழப்பட்ட போதெல்லாம் கேட்கலாம். இடமாற்றம் என்பது மேட்ரிக்ஸின் நெடுவரிசை மற்றும் வரிசை மதிப்புகளை மாற்றுவதற்கான ஒரு வழியாகும். தயவுசெய்து கவனிக்கவும் a திசையனை மாற்ற முடியாது ஒரு திசையன் என்பது அந்த மதிப்புகள் வரிசைகள் மற்றும் நெடுவரிசைகளாக வகைப்படுத்தப்படாமல் மதிப்புகளின் தொகுப்பாகும். வரிசை திசையனை நெடுவரிசை திசையனாக மாற்றுவது அல்ல என்பதை நினைவில் கொள்க (நேரியல் இயற்கணிதத்தின் வரையறைகளின் அடிப்படையில், இந்த பாடத்தின் எல்லைக்கு வெளியே).

இப்போதைக்கு, ஒரு மேட்ரிக்ஸை மாற்றுவதன் மூலம் நாம் அமைதியைக் காண்போம். NumPy உடன் மேட்ரிக்ஸின் இடமாற்றத்தை அணுகுவது மிகவும் எளிது:

அணி. டி

கொடுக்கப்பட்ட மேட்ரிக்ஸில் மேலே உள்ள கட்டளையின் வெளியீடு இங்கே கொடுக்கப்பட்டுள்ளது:

நெடுவரிசை திசையனாக மாற்றுவதற்கு வரிசை திசையனிலும் அதே செயல்பாட்டைச் செய்யலாம்.

மேட்ரிக்ஸை தட்டையாக்குதல்

நாம் ஒரு மேட்ரிக்ஸை ஒரு பரிமாண வரிசைக்கு மாற்றலாம். பின்வரும் குறியீடு துணுக்கு மூலம் இதைச் செய்யலாம்:

அணி. தட்டையான()

கொடுக்கப்பட்ட மேட்ரிக்ஸில் மேலே உள்ள கட்டளையின் வெளியீடு இங்கே கொடுக்கப்பட்டுள்ளது:

தட்டையான மேட்ரிக்ஸ் ஒரு பரிமாண வரிசை, பாணியில் வெறுமனே நேரியல் என்பதை நினைவில் கொள்க.

ஈஜன் மதிப்புகள் மற்றும் ஈஜென்வெக்டர்களைக் கணக்கிடுதல்

இயந்திர கற்றல் தொகுப்புகளில் ஐஜென்வெக்டர்கள் பொதுவாகப் பயன்படுத்தப்படுகின்றன. எனவே, ஒரு நேரியல் உருமாற்ற செயல்பாடு மேட்ரிக்ஸாக வழங்கப்படும்போது, ​​எக்ஸ், ஈஜென்வெக்டர்கள் திசையன்களாகும், அவை திசையனின் அளவில் மட்டுமே மாறுகின்றன ஆனால் அதன் திசையில் அல்ல. நாம் இதைச் சொல்லலாம்:

Xv = .v

இங்கே, X என்பது சதுர அணி மற்றும் γ ஐஜென் மதிப்புகளைக் கொண்டுள்ளது. மேலும், v ஐஜென்வெக்டர்களைக் கொண்டுள்ளது. NumPy உடன், Eigenvalues ​​மற்றும் Eigenvectors ஐக் கணக்கிடுவது எளிது. இங்கே நாம் அதை நிரூபிக்கும் குறியீட்டின் துண்டு:

மதிப்பீடுகள், ஈவெக்டர்கள் = np.linalg.eig(அணி)

கொடுக்கப்பட்ட மேட்ரிக்ஸில் மேலே உள்ள கட்டளையின் வெளியீடு இங்கே கொடுக்கப்பட்டுள்ளது:

வெக்டர்களின் டாட் தயாரிப்புகள்

வெக்டர்களின் டாட் தயாரிப்புகள் 2 திசையன்களை பெருக்கும் ஒரு வழியாகும். இது உங்களுக்கு சொல்கிறது ஒரே திசையில் எத்தனை திசையன்கள் உள்ளன , குறுக்கு தயாரிப்புக்கு மாறாக, எதிர் திசையில், திசையன்கள் ஒரே திசையில் எவ்வளவு குறைவாக உள்ளன (ஆர்த்தோகனல் என்று அழைக்கப்படுகிறது). குறியீடு துணுக்கில் கொடுக்கப்பட்டுள்ளபடி இரண்டு திசையன்களின் புள்ளிப் பொருளை நாம் இங்கே கணக்கிடலாம்:

a = np.array([3,5,6])
b = np.array([2. 3,பதினைந்து,1])

np.dot(a, b)

கொடுக்கப்பட்ட வரிசைகளில் மேலே உள்ள கட்டளையின் வெளியீடு இங்கே கொடுக்கப்பட்டுள்ளது:

மெட்ரிக்ஸைச் சேர்த்தல், கழித்தல் மற்றும் பெருக்குதல்

பல மெட்ரிக்ஸைச் சேர்ப்பதும் கழிப்பதும் மெட்ரிஸ்களில் மிகவும் நேரடியான செயல்பாடாகும். இதைச் செய்ய இரண்டு வழிகள் உள்ளன. இந்த செயல்பாடுகளைச் செய்ய குறியீட்டுத் துணுக்குப் பார்ப்போம். இதை எளிமையாக வைத்திருக்க, ஒரே மேட்ரிக்ஸை இரண்டு முறை பயன்படுத்துவோம்:

np.add(அணி, அணி)

அடுத்து, இரண்டு மெட்ரிஸ்களை இவ்வாறு கழிக்கலாம்:

np. கழித்தல்(அணி, அணி)

கொடுக்கப்பட்ட மேட்ரிக்ஸில் மேலே உள்ள கட்டளையின் வெளியீடு இங்கே கொடுக்கப்பட்டுள்ளது:

எதிர்பார்த்தபடி, மேட்ரிக்ஸில் உள்ள ஒவ்வொரு உறுப்புகளும் அதனுடன் தொடர்புடைய உறுப்புடன் சேர்க்கப்படுகின்றன/கழிக்கப்படுகின்றன. மேட்ரிக்ஸைப் பெருக்குவது நாம் முன்பு செய்ததைப் போல டாட் தயாரிப்பைக் கண்டுபிடிப்பதைப் போன்றது:

np.dot(அணி, அணி)

மேலே உள்ள குறியீடு இரண்டு மெட்ரிக்ஸின் உண்மையான பெருக்கல் மதிப்பை கண்டுபிடிக்கும்:

அணி*அணி

கொடுக்கப்பட்ட மேட்ரிக்ஸில் மேலே உள்ள கட்டளையின் வெளியீடு இங்கே கொடுக்கப்பட்டுள்ளது:

முடிவுரை

இந்த பாடத்தில், பொதுவாக பயன்படுத்தப்படும் தரவு செயலாக்கம், விளக்க புள்ளிவிவரங்கள் மற்றும் தரவு அறிவியல் ஆகியவற்றைப் பயன்படுத்தும் வெக்டர்கள், மெட்ரிஸ்கள் மற்றும் வரிசைகள் தொடர்பான கணித செயல்பாடுகளில் நிறையச் சென்றோம். இந்த விரைவான பாடம், பல்வேறு வகையான கருத்துக்களில் மிகவும் பொதுவான மற்றும் மிக முக்கியமான பிரிவுகளை மட்டுமே உள்ளடக்கியது, ஆனால் இந்த செயல்பாடுகள் இந்த தரவு கட்டமைப்புகளை கையாளும் போது அனைத்து செயல்பாடுகளையும் என்ன செய்ய முடியும் என்பது பற்றி ஒரு நல்ல யோசனையை அளிக்க வேண்டும்.

பாடத்தைப் பற்றிய உங்கள் கருத்தை ட்விட்டரில் இலவசமாகப் பகிரவும் @linuxhint மற்றும் @sbmaggarwal (அது நான்தான்!).