3. NumPy – இருக்கும் தரவிலிருந்து அணி (Array) உருவாக்கம்

NumPy-ல் அணிகளை (Arrays) உருவாக்க பல வழிகள் உள்ளன. அவற்றில் ஒரு முக்கியமான முறை என்பது ஏற்கனவே உள்ள தரவுகளிலிருந்து (Existing Data) அணிகளை உருவாக்குவதாகும். இந்த முறையில், Python-ல் உள்ள:

  • பட்டியல்கள் (Lists)
  • இருமத் தரவுகள் (Binary Data – Buffers)
  • மீள்தொடர்ப்பு பொருள்கள் (Iterable Objects)

போன்றவற்றைப் பயன்படுத்தி எளிதாக NumPy அணிகளை உருவாக்கலாம்.

3.1. numpy.asarray – பட்டியலை அணியாக மாற்றுதல் (List to Array Conversion)

asarray() செயல்பாடு (Function) ஏற்கனவே உள்ள தரவை NumPy அணியாக மாற்ற உதவுகிறது. இதன் சிறப்பம்சம் என்னவென்றால், இது அசல் தரவின் நகலை (Copy) உருவாக்காமலேயே அணியை உருவாக்குகிறது.

import numpy as np

# பட்டியலை அணியாக மாற்றுதல்
எண்_பட்டியல் = [1, 2, 3, 4, 5]
எண்_அணி = np.asarray(எண்_பட்டியல்)
print("பட்டியலிலிருந்து உருவான அணி:", எண்_அணி)

விளக்கம்:
எண்_பட்டியல் என்ற Python பட்டியலை asarray() மூலம் NumPy அணியாக மாற்றுகிறோம்
– அசல் தரவின் வகை (Data Type) மாறாமல் பாதுகாக்கப்படுகிறது
– நினைவகம் (Memory) திறம்பட பயன்படுத்தப்படுகிறது

வெளியீடு:

பட்டியலிலிருந்து உருவான அணி: [1 2 3 4 5]

3.2. numpy.frombuffer – இருமத் தரவை அணியாக மாற்றுதல் (Binary Data to Array)

frombuffer() முறை (Method) இரும வடிவில் (Binary Format) உள்ள தரவை அணியாக மாற்ற உதவுகிறது. இது குறிப்பாக:

  • கோப்புகளில் இருந்து படித்த தரவு (File Data)
  • வலையமைப்பு தரவுகள் (Network Data)

போன்றவற்றை செயல்படுத்த பயனுள்ளதாக இருக்கும்.

இரும_தரவு = b'Hello World'
அணி = np.frombuffer(இரும_தரவு, dtype='S1')
print("இருமத் தரவிலிருந்து உருவான அணி:", அணி)

விளக்கம்:
b'Hello World' என்ற இருமத் தரவை அணியாக மாற்றுகிறோம்
dtype='S1' என்பது ஒவ்வொரு பைட்டையும் (Byte) தனி உறுப்பாக (Element) கருதுகிறது

வெளியீடு:

இருமத் தரவிலிருந்து உருவான அணி: [b'H' b'e' b'l' b'l' b'o' b' ' b'W' b'o' b'r' b'l' b'd']

3.3. numpy.fromiter – மீள்தொடர்ப்பு பொருளை அணியாக மாற்றுதல் (Iterable to Array)

fromiter() செயல்பாடு மீள்தொடர்ப்பு பொருள்களை (Iterables) அணிகளாக மாற்ற உதவுகிறது. இது:

  • உருவாக்கிகள் (Generators)
  • மீள்தொடர்ப்பிகள் (Iterators)

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

சதுரம் = (x*x for x in range(5)) # உருவாக்கி வெளிப்பாடு (Generator Expression)
அணி = np.fromiter(சதுரம், dtype='int32')
print("மீள்தொடர்ப்பிலிருந்து உருவான அணி:", அணி)

விளக்கம்:
(x*x for x in range(5)) ஒரு உருவாக்கி வெளிப்பாடு
– இது தேவைக்கேற்ப மதிப்புகளை உருவாக்கும் (Lazy Evaluation)
fromiter() இந்த மதிப்புகளை நேரடியாக அணியாக மாற்றுகிறது

வெளியீடு:

மீள்தொடர்ப்பிலிருந்து உருவான அணி: [ 0 1 4 9 16]

NumPy அணி உருவாக்கத்தின் முக்கிய சிறப்புகள்

1. நினைவக மேலாண்மைத் திறன் (Enhanced Memory Management)

NumPy-யின் அணி உருவாக்க முறைகள் நினைவகத்தை மிகத் திறம்பட கையாளுகின்றன:

  • asarray() முறை:
    இந்த செயல்பாடு அசல் தரவின் முழு நகலை (complete copy) உருவாக்காமல், அதே நினைவக இடத்தைப் பயன்படுத்தி அணியை உருவாக்குகிறது. இது:
  • நினைவக பயன்பாட்டை குறைக்கிறது
  • பெரிய தரவுகளுடன் பணிபுரியும் போது செயல்திறனை அதிகரிக்கிறது

  • fromiter() முறை:
    இது “தேவைக்கேற்ப உருவாக்கும்” (on-demand generation) முறையில் செயல்படுகிறது. அதாவது:

  • முழு தரவும் ஒரே சமயத்தில் நினைவகத்தில் ஏற்றப்படுவதில்லை
  • தரவு உறுப்புகள் ஒவ்வொன்றாக செயலாக்கப்படுகின்றன
  • இது மிகப்பெரிய தரவுத் தொகுப்புகளுக்கு ஏற்றது

2. முனைப்பான செயல்திறன் (Optimized Performance)

NumPy அணிகள் உயர் செயல்திறனை வழங்குகின்றன:

  • பெரும் தரவுகளுக்கான திறன்:
    சாதாரண Python பட்டியல்களுடன் ஒப்பிடும்போது, NumPy:
  • 10-100 மடங்கு வேகமாக செயல்படுகிறது
  • குறைந்த நினைவகத்தை மட்டுமே பயன்படுத்துகிறது

  • திசையன் செயல்பாடுகளின் ஆதிக்கம்:
    NumPy-யின் திசையன் செயல்பாடுகள் (vectorized operations):

  • வளையங்கள் (loops) தேவையில்லாமல் செயல்படுகின்றன
  • C மொழியில் செயல்படுத்தப்பட்டுள்ளதால் மிக வேகமாக இயங்குகின்றன
  • பல செயல்பாடுகளை ஒரே நேரத்தில் செயல்படுத்தும் திறன் கொண்டவை

3. பல்துறைப் பயன்பாடு (Multipurpose Utility)

NumPy அணிகள் பலவகையான தரவு மூலங்களுடன் பணியாற்றும் திறன் கொண்டவை:

  • தரவு மூலங்களின் வகைகள்:
  • Python-இன் அடிப்படைத் தரவு கட்டமைப்புகள் (lists, tuples)
  • இருமத் தரவு ஓட்டங்கள் (binary data streams)
  • வெவ்வேறு கோப்பு வடிவங்கள் (file formats)
  • தரவுத்தளங்களிலிருந்து பெறப்பட்ட தரவுகள்

  • இணக்கத்திறன்:
    NumPy அணிகள்:

  • பிற Python நூலகங்களுடன் (Pandas, SciPy, Matplotlib) நேரடியாக இணைந்து செயல்படும்
  • இயந்திரக் கற்றல் (Machine Learning) மற்றும் தரவு பகுப்பாய்வு (Data Analysis) நூலகங்களுக்கு அடிப்படையாக உள்ளது
  • பல்வேறு தரவு வகைகளுக்கு (data types) ஆதரவு வழங்குகிறது

இந்த சிறப்பம்சங்கள் NumPy-யை அறிவியல் கணக்கீடுகள் (scientific computing) மற்றும் தரவு பகுப்பாய்வுக்கு (data analysis) இன்றியமையாத கருவியாக ஆக்குகின்றன.

முனைவர் ப. தமிழ் அரசன்

tamilarasanbakthavatchalam@gmail.com