मुख्य सामग्री पर जाएँ

Python में घातांक: शुरुआती लोगों के लिए एक व्यापक गाइड

Python में घातांक को विभिन्न तरीकों से सीखें—बिल्ट-इन फ़ंक्शंस से लेकर NumPy जैसी शक्तिशाली लाइब्रेरी तक—और वास्तविक जीवन के परिदृश्यों में उनका उपयोग करके गहरी समझ पाएँ।
· 9 मि॰ पढ़ें

AI के साथ खोजें

एक्सपोनेंशिएशन डेटा विश्लेषण से लेकर एल्गोरिदम डिज़ाइन तक, प्रोग्रामिंग के कई क्षेत्रों में मौलिक है। इसके उपयोगों में सोशल मीडिया ट्रेंड जैसे बड़े डेटा सेट में घातीय पैटर्न का विश्लेषण करना और चक्रवृद्धि वृद्धि या ब्याज दर जैसी गणितीय गणनाएँ शामिल हैं।

इसके अलावा, एक्सपोनेंशिएशन मशीन लर्निंग (ML) और आर्टिफिशियल इंटेलिजेंस (AI) में, खासकर न्यूरल नेटवर्क और इमेज रिकग्निशन में, अहम भूमिका निभाता है। इसलिए, Python में घातांकों के साथ प्रभावी ढंग से गणनाएँ करना समझना आवश्यक है।

इस गाइड में, हम Python में एक्सपोनेंशिएशन करने के विभिन्न तरीकों का पता लगाएंगे। हम बिल्ट-इन फ़ंक्शंस, math मॉड्यूल की फ़ंक्शंस, और Numpy लाइब्रेरी की फ़ंक्शंस पर नज़र डालेंगे। प्रत्येक तरीके के अपने फायदे हैं। बढ़त पाने, अपनी समझ मजबूत करने, और विशेषज्ञ बनने के लिए हमारे Python Programming Fundamentals स्किल ट्रैक में नामांकन करें। 

Python में घातांक

Python घातांक की गणना करने के कई तरीके प्रदान करता है:

  • **: डबल एस्टरिस्क ऑपरेटर (**) एक्सपोनेंशिएशन के लिए सबसे सरल और बुनियादी विकल्प है। उदाहरण के लिए, x ** y x को y की घात तक बढ़ाता है।

  • pow(): यह बिल्ट-इन फ़ंक्शन दो आर्ग्युमेंट लेता है: बेस और एक्सपोनेंट। यह बेस को एक्सपोनेंट की घात तक बढ़ाने का परिणाम लौटाता है। यह मॉड्यूलर एक्सपोनेंशिएशन के लिए वैकल्पिक तीसरा आर्ग्युमेंट भी स्वीकार करता है। उदाहरण: pow(x, y)।

  • math.pow(): math मॉड्यूल का यह फ़ंक्शन pow() जैसा ही है, लेकिन यह हमेशा फ्लोटिंग-पॉइंट परिणाम लौटाता है। यह दो आर्ग्युमेंट लेता है, जो फ्लोट या इंट दोनों हो सकते हैं। उदाहरण: math.pow(x, y)।

  • math.exp(): math मॉड्यूल का एक और फ़ंक्शन, यह किसी संख्या का नैचुरल एक्सपोनेंशियल लौटाता है, यानी आर्ग्युमेंट की घात तक उठा हुआ e। उदाहरण: math.exp(argument)।

  • np.power(): NumPy लाइब्रेरी का यह फ़ंक्शन ऐरे या मैट्रिस के साथ काम करने के लिए बनाया गया है। यह एलिमेंट-वाइज़ एक्सपोनेंशिएशन करता है। उदाहरण: np.power(array, exponent)।

Python एक्सपोनेंट की बेसिक्स

डबल एस्टरिस्क ऑपरेटर (**) Python में एक्सपोनेंशिएशन की गणना करने का सबसे सीधा तरीका है। यह ऑपरेटर बाएँ ओपरेन्ड (बेस) को दाएँ ओपरेन्ड (एक्सपोनेंट) की घात तक बढ़ाता है। इसे पावर ऑपरेटर या एक्सपोनेंट ऑपरेटर भी कहा जाता है।

यदि आप अपनी Python प्रोग्रामिंग स्किल्स में सुधार करना चाहते हैं और वास्तविक प्रोग्रामर की तरह कोड लिखना सीखना चाहते हैं, तो Python Programming कोर्स देखें।

धनात्मक घातांक

इस कोड स्निपेट में, हम धनात्मक घातांकों का उपयोग करके एक्सपोनेंशिएशन की गणना कैसे करें, दिखाते हैं। उदाहरण के लिए, 2 की घात 3 को 2 × 2 × 2 के रूप में गणना किया जाता है, जिसका परिणाम 8 आता है। इसी तरह, -10 की घात 4 को -10 × -10 × -10 × -10 के रूप में गणना किया जाता है, जिसका परिणाम 10000 आता है।

base = 2
exponent = 3
print(base**exponent)  # Output: 8

base = -10
exponent = 4
print(base**exponent)  # Output: 10000

ऋणात्मक घातांक

यह कोड किसी बेस को ऋणात्मक घात तक बढ़ाने का परिणाम निकालता है। उदाहरण के लिए, 5 की घात -2 का मान 0.04 होता है। इसी तरह, 25 की घात -5 एक बहुत छोटा मान देती है जो वैज्ञानिक संकेतन (1.024e-07) में दर्शाया जाता है।

base = 5
exponent = -2
print(base**exponent) # 0.04

base = 25
exponent = -5
print(base**exponent) # 1.024e-07

किसी संख्या को ऋणात्मक घात तक बढ़ाना, उस संख्या को धनात्मक घात तक बढ़ाने के व्युत्क्रम (reciprocal) के बराबर होता है।

किसी संख्या को ऋणात्मक घात तक बढ़ाना

Python में, यदि आप 0.0 को ऋणात्मक घात तक बढ़ाते हैं तो ** ऑपरेटर ZeroDivisionError देता है, क्योंकि शून्य से भाग देना अपरिभाषित है।

base = 0
exponent = -5
print(base**exponent)

आउटपुट है:

Python में ZeroDivisionError

फ्लोटिंग-पॉइंट घातांक

इन कोड उदाहरणों से दिखता है कि Python 2 जैसे धनात्मक बेस को 1.5 जैसे भिन्नात्मक एक्सपोनेंट तक सही ढंग से बढ़ा देता है। हालांकि, नकारात्मक बेस के साथ भिन्नात्मक एक्सपोनेंट का उपयोग करने पर कॉम्प्लेक्स संख्या प्राप्त होती है।

base = 2
exponent = 1.5
print(base**exponent) # 2.8284271247461903

base = -0.25
exponent = 1.25
print(base**exponent) # (-0.12500000000000003-0.125j)

और गहराई में: बिल्ट-इन फ़ंक्शंस

Python एक्सपोनेंट्स की गणना के लिए कई बिल्ट-इन फ़ंक्शंस प्रदान करता है, लेकिन हम दो पर ध्यान देंगे: pow() और math.pow()। पहली नज़र में ये फ़ंक्शंस समान लग सकते हैं, लेकिन इनमें कुछ महत्वपूर्ण अंतर हैं।

pow()

pow() फ़ंक्शन दो अनिवार्य आर्ग्युमेंट लेता है: बेस और एक्सपोनेंट। वैकल्पिक रूप से, pow() एक तीसरा आर्ग्युमेंट स्वीकार करता है ताकि एक्सपोनेंशियल मान का मॉड्यूलस निकाला जा सके। सिंटैक्स है: pow(base, exp, mod), जहाँ 'mod' मॉड्यूलस को दर्शाता है। यह फ़ंक्शन एक्सपोनेंशिएशन के शेषफल को लौटाता है।

बेसिक एक्सपोनेंशिएशन

बेसिक गणनाओं के लिए, बस फ़ंक्शन को बेस और एक्सपोनेंट दें, जो ** ऑपरेटर की तरह ही काम करता है।

r = pow(2, 3)
print(r) # 8

r = pow(4, -10)
print(r) # 2.56e-06

फ्लोटिंग-पॉइंट एक्सपोनेंशिएशन

नीचे दिए गए कोड में, हम बेस और एक्सपोनेंट दोनों के लिए फ्लोटिंग-पॉइंट संख्याओं का उपयोग कर रहे हैं, जिनमें से कुछ नकारात्मक हैं। यह तरीका ** ऑपरेटर जैसा ही काम करता है।

r = pow(3.5, 2)
print(r)  # 12.25

r = pow(3.5, -2)
print(r)  # 0.08163265306122448

r = pow(3.5, 3.2)
print(r)  # 55.08301986166747

r = pow(-3.5, -3.3)
print(r)  # (-0.009414432347757688+0.012957854474952653j)

r = pow(-3.5, 3.3)
print(r)  # (-36.698070584660925-50.510560868902246j)

नोट: यदि आप मॉड्यूलर गणनाओं की आवश्यकता के बिना बेसिक एक्सपोनेंशिएशन कर रहे हैं, तो pow() की तुलना में ** ऑपरेटर अधिक संक्षिप्त और पठनीय समाधान है।

मॉड्यूलर एक्सपोनेंशिएशन

pow() फ़ंक्शन का वैकल्पिक मॉड्यूलस पैरामीटर मॉड्यूलर एक्सपोनेंशिएशन के साथ काम करते समय अत्यंत उपयोगी है। यह विशेष रूप से क्रिप्टोग्राफी या बड़ी संख्याओं के साथ काम करने में सहायक होता है, क्योंकि मॉड्यूलर एक्सपोनेंशिएशन बेहतर कुशलता देता है। उदाहरण के लिए, 3 की घात 4 मॉड 5 का परिणाम 1 होता है, क्योंकि 81 मॉड 5 बराबर 1 है।

r = pow(3, 4, 5)
print(r)  # 1

r = pow(123, 456, 789)
print(r)  # 699

r = pow(2, -3, 7)
print(r)  # 1

r = pow(-13, 8, 62)
print(r)  # 7

आप सोच सकते हैं कि मॉड्यूलर एक्सपोनेंशिएशन के लिए सीधे pow() का उपयोग करना pow(base, exp) % mod या (base**exp) % mod से अधिक कुशल क्यों है। बिल्ट-इन pow() फ़ंक्शन विशेष रूप से इस ऑपरेशन के लिए डिज़ाइन किया गया है, जबकि अन्य तरीके अनावश्यक मध्यवर्ती गणनाएँ करते हैं। बड़े मानों के साथ यह प्रदर्शन में महत्वपूर्ण अंतर ला सकता है।

import timeit

start_pow_mod = timeit.default_timer()
pow(500000000, 3000, 4000)
stop_pow_mod = timeit.default_timer()

pow_mod_time = stop_pow_mod - start_pow_mod

print("Time using pow(base, exp, mod): ", pow_mod_time)

start_pow_other = timeit.default_timer()
pow(500000000, 3000) % 4000
stop_pow_other = timeit.default_timer()

pow_other_time = stop_pow_other - start_pow_other

print("Time using pow(base, exp) % mod:", pow_other_time)


start_aestrisk = timeit.default_timer()
(500000000**3000) % 4000
stop_aestrisk = timeit.default_timer()

aestrisk_time = stop_aestrisk - start_aestrisk

print("Time using (base ** exp) % mod: ", aestrisk_time)


print(
    f"Speed comparison: pow(base, exp, mod) was {pow_other_time / pow_mod_time} times faster than pow(base, exp) % mod and {aestrisk_time/pow_mod_time} times faster than (base ** exp) % mod"
)

आउटपुट है:

Python में मॉड्यूलर एक्सपोनेंशिएशन

pow() फ़ंक्शन स्थिति के अनुसार अलग-अलग त्रुटियाँ दे सकता है।

# Trying to take the modulo of complex numbers raises a ValueError.
print(pow(2 + 3j, 4, 5))  # ValueError: complex modulo

# Taking the third argument is not allowed if the second argument is negative.
print(pow(10, -11, 4))  # ValueError: base is not invertible for the given modulus

# If the first or second argument is a float, the third argument is not allowed.
print(pow(2.4, 3, 4))  # TypeError: pow() 3rd argument not allowed unless all arguments are integers

# Passing any argument as a string results in a TypeError.
print(pow(2, 4, '3'))  # TypeError: unsupported operand type(s) for pow(): 'int', 'int', 'str'

math.pow()

math.pow(x, n) फ़ंक्शन x को n की घात तक बढ़ाता है। math.pow() आर्ग्युमेंट्स को फ्लोट में बदलता है और परिणाम सटीक फ्लोटिंग-पॉइंट एक्सपोनेंशिएशन के रूप में लौटाता है। यह सटीकता डेटा विश्लेषण और वैज्ञानिक कंप्यूटिंग जैसे क्षेत्रों में महत्वपूर्ण हो जाती है, जहाँ शुद्धता सर्वोपरि है।

यहाँ सरल कोड है। math.pow() फ़ंक्शन फ्लोटिंग-पॉइंट मान लौटाता है, जबकि pow() फ़ंक्शन पूर्णांक मान लौटा सकता है।

import math
print(math.pow(6, 3))  # 216.0
print(pow(6, 3))  # 216

math.pow() फ़ंक्शन काल्पनिक (imaginary) संख्याएँ स्वीकार नहीं करता।

Python में can't convert complex to float TypeError

math.pow() नकारात्मक बेस के साथ भिन्नात्मक एक्सपोनेंट स्वीकार नहीं करता, क्योंकि यह ValueError देगा।

Python में math domain error ValueError

एडवांस्ड एक्सपोनेंशिएशन के लिए लाइब्रेरीज़ का उपयोग

उन्नत एक्सपोनेंशिएशन कार्यों को संभालने के लिए, जैसे किसी संख्या का एक्सपोनेंशियल मान निकालना या ऐरे/मैट्रिस में एलिमेंट-वाइज़ एक्सपोनेंशिएशन करना, आप दो फ़ंक्शंस का लाभ उठा सकते हैं: np.power() और math.exp()।

np.power()

Python में एक्सपोनेंशिएशन केवल बिल्ट-इन फ़ंक्शंस तक सीमित नहीं है। Python में NumPy नामक एक शक्तिशाली लाइब्रेरी है, जो ऐरे पर विभिन्न प्रकार के गणितीय ऑपरेशंस सक्षम करती है। कई बार, आपको पूरे ऐरे पर एक्सपोनेंशिएशन करना होता है, और यहीं np.power() काम आता है। यह ऐरे के एलिमेंट-वाइज़ एक्सपोनेंशिएशन के लिए डिज़ाइन किया गया है।

import numpy as np
r = np.power([2, 4, 8], 2)
print(r)  # [4, 16, 64]

r = np.power([2, 4, 8], [1, 2, 3])
print(r)  # [4 64 4096]

r = np.power([[2, 3, 4], [5, 6, 7]], [1, 2, 3])
print(r) # [[2 9 64] [5 36 343]]

np.power() फ़ंक्शन ऋणात्मक एक्सपोनेंट स्वीकार नहीं करता।

import numpy as np
r = np.power([2, 4, 8], -2)
print(r)

आउटपुट है:

Python में एक्सपोनेंशिएशन करने पर ValueError

यदि आप किसी नकारात्मक संख्या को गैर-पूर्णांक घात तक बढ़ाने का प्रयास करते हैं, तो NumPy NaN (Not a Number) मान लौटाएगा।

image7.png

math.exp()

math.exp(x) फ़ंक्शन x का एक्सपोनेंशियल मान निकालता है, जो ऑयलर संख्या e को x की घात तक उठाने के बराबर है। ऑयलर संख्या लगभग 2.71828 के बराबर होती है, और गणितीय संकेतन में इस क्रिया को e^x के रूप में दर्शाया जाता है।

import math
x = 2
r = math.exp(x)
print("Exponential of", x, ":", r) # 7.38905609893065

math.exp(x) की एक महत्वपूर्ण विशेषता इसकी अनुकूलनशीलता है। यह धनात्मक संख्याओं, ऋणात्मक संख्याओं, और फ्लोटिंग-पॉइंट संख्याओं—सभी को संभाल सकता है।

import math
print(math.exp(-2))  # 0.1353352832366127
print(math.exp(-2.5))  # 0.0820849986238988
print(math.exp(2.5))  # 12.182493960703473

व्यावहारिक उपयोग और उदाहरण

एक्सपोनेंशिएशन गणित में एक मौलिक क्रिया है, जिसका डेटा विश्लेषण और वैज्ञानिक कंप्यूटिंग में व्यापक उपयोग है।

यदि आप Python के साथ डेटा विश्लेषण की बुनियाद में महारत हासिल करना चाहते हैं, तो कोर्स Introduction to Python for Data Science देखें।

मान लीजिए आपके पास एक CSV फ़ाइल है जिसमें कई पंक्तियों के लिए मूलधन, ब्याज दर, और निवेश अवधि का डेटा है। आप उपरोक्त किसी भी विधि का उपयोग करके प्रत्येक पंक्ति के लिए चक्रवृद्धि ब्याज की गणना कर सकते हैं।

Principal,Rate,Years
1000,0.05,5
2000,0.03,10
1500,0.08,3
3000,0.06,7
2500,0.04,9
1800,0.07,4
2200,0.025,6
3500,0.09,2
2800,0.035,8
4000,0.02,5

यहाँ कोड है:

import csv


def compound_interest(principal, rate, years):
    return principal * (1 + rate) ** years


# Read data from CSV file

data = []
with open("data.csv", newline="") as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        row["Compound Interest"] = compound_interest(
            float(row["Principal"]), float(row["Rate"]), int(row["Years"])
        )
        data.append(row)
# Write data to a new CSV file with compound interest column

output_file = "data.csv"
fieldnames = ["Principal", "Rate", "Years", "Compound Interest"]

with open(output_file, mode="w", newline="") as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    for row in data:
        writer.writerow(row)
print("Compound interest calculations saved to", output_file)

परिणाम:

Python में चक्रवृद्धि ब्याज की गणना

बेहतरीन! आपने सभी पंक्तियों के लिए चक्रवृद्धि ब्याज की गणना की और उसे एक अलग कॉलम में संग्रहीत किया। आप इस डेटा का आगे के विश्लेषण के लिए उपयोग कर सकते हैं। इसी तरह, ऐसे सैकड़ों अन्य उपयोग के मामले हैं जहाँ एक्सपोनेंशिएशन का व्यापक रूप से उपयोग होता है, जैसे समय के साथ जनसंख्या वृद्धि का मॉडलिंग।

निष्कर्ष

इस गाइड में, हमने Python में घातांक की गणना के पाँच विभिन्न तरीकों का अध्ययन किया, जिनमें से प्रत्येक अलग-अलग लाभ देता है। आप इन्हें कई व्यावहारिक परिदृश्यों में उपयोग कर सकते हैं, जैसे चक्रवृद्धि ब्याज निकालना, जनसंख्या वृद्धि का मॉडलिंग करना, इत्यादि।

  • डबल-एस्टरिस्क ऑपरेटर (**): रोज़मर्रा के उपयोग के लिए सरल और सीधा।
  • pow(): वैकल्पिक "मॉड्यूलस" ट्रिक के साथ बहुमुखी।
  • math.pow(): फ्लोटिंग-पॉइंट संख्याओं के रूप में सटीक परिणाम।
  • np.power(): त्रुटि-जाँच के साथ ऐरे संभालने के लिए शक्तिशाली।
  • math.exp(): एक्सपोनेंशियल मान की गणना के लिए समर्पित टूल।

यदि आप अपनी सांख्यिकीय स्किल्स को बढ़ाना चाहते हैं और Python का उपयोग करके डेटा से निष्कर्ष निकालने के लिए उसे इकट्ठा करना, विश्लेषित करना, और सटीक निष्कर्ष निकालना सीखना चाहते हैं, तो Introduction to Statistics in Python कोर्स देखें।

Satyam Tripathi

लेखक

Satyam Tripathi

Python Exponent FAQs

Python में मुझे ** ऑपरेटर की बजाय math.pow() कब उपयोग करना चाहिए?

जब आपको वैज्ञानिक या डेटा विश्लेषण उद्देश्यों के लिए सटीक फ्लोटिंग-पॉइंट परिणाम चाहिए हों, तो math.pow() का उपयोग करें। यदि सरलता आपका लक्ष्य है और गणना में फ्लोटिंग-पॉइंट सटीकता की आवश्यकता नहीं है, तो ** ऑपरेटर पर्याप्त है।

क्या Python ऋणात्मक या भिन्नात्मक घातांकों को संभाल सकता है?

हाँ, Python ऋणात्मक और भिन्नात्मक घातांकों का समर्थन करता है:

  • ऋणात्मक घातांक: किसी संख्या के धनात्मक घात तक बढ़े मान के व्युत्क्रम की गणना के लिए ** ऑपरेटर या pow() का उपयोग करें।
  • भिन्नात्मक घातांक: ** ऑपरेटर या math.pow() का उपयोग करें। ध्यान दें कि नकारात्मक बेस के साथ भिन्नात्मक एक्सपोनेंट का परिणाम कॉम्प्लेक्स संख्या होता है।
Python में मॉड्यूलर एक्सपोनेंशिएशन कैसे लागू होता है, और यह कुशल क्यों है?

मॉड्यूलर एक्सपोनेंशिएशन को pow() फ़ंक्शन में तीन आर्ग्युमेंट देकर किया जा सकता है: pow(base, exp, mod)। यह (base**exp) % mod की तुलना में अधिक कुशल है क्योंकि pow() बड़े अंकों के लिए अनुकूलित है और मध्यवर्ती गणनाएँ कम करता है।

NumPy का np.power() ऋणात्मक घातांकों के लिए त्रुटि क्यों देता है?

np.power() ऐरे कंप्यूटेशंस के लिए डिज़ाइन किया गया है और ऋणात्मक घातांकों का समर्थन नहीं करता क्योंकि वे विभाजन को इंगित करते हैं, जो सभी ऐरे प्रकारों के साथ संगत नहीं है। ऐसी गणनाओं के लिए ** या pow() जैसे वैकल्पिक तरीकों का उपयोग करें।

विषय