⚠ यह कार्रवाई अनुमति नहीं है!
🐍 NIELIT O Level · M3-R5 Python · Hindi Notes

Chapter 9: NumPy Basics — Data Science की पहली सीढ़ी

M3-R5 का आख़िरी chapter — NumPy (Numerical Python)! Arrays, Array Creation (zeros/ones/full/eye), Indexing/Slicing, 2D Arrays (axis, transpose), Array Operations (argmax, copy() का trap), Stacking, Insert/Delete व Broadcasting — List से कितनी तेज़ व शक्तिशाली NumPy है, सब diagrams से visualize करके समझेंगे।

📑 11 Sections 🖼️ 3 Diagrams 💻 50+ Examples ❓ 50 MCQs + Output Qs 🗓 Updated 2026
👉 सभी chapters देखने के लिए swipe करें
📑 Table of Contents — किसी भी topic पर सीधे जाएँ
9.0

NumPy क्या है? — List से आगे की दुनिया

NumPy (Numerical Python) एक library है जो ndarray (n-dimensional array) देती है — List से बहुत तेज़ व memory-efficient। Data Science, Machine Learning, Scientific Computing की नींव।

List vs NumPy Array — Memory में क्या अंतर है

🐢 Python List — बिखरे objects, अलग types int 📍A1 str 📍B7 float 📍C3 हर element अलग जगह (pointer से जुड़ा) — धीमा, ज़्यादा memory 🚀 NumPy Array — लगातार memory, एक ही type 10203040 Side-by-side (contiguous) — तेज़ access, कम memory!
🐍 List vs Array — Speed का असली फ़र्क▶ Run
# List se har element x2 karna — LOOP chahiye
nums_list = [1, 2, 3, 4, 5]
doubled = [n * 2 for n in nums_list]
print(doubled)

# NumPy se — SEEDHA, bina loop!
import numpy as np
nums_array = np.array([1, 2, 3, 4, 5])
print(nums_array * 2)
OUTPUT[2, 4, 6, 8, 10]
[ 2 4 6 8 10]
समझें: List में हर element को अलग से process करना पड़ा (loop/comprehension); NumPy array में * 2 लिखते ही पूरे array पर एक साथ operation हो गया — इसे Vectorized Operation कहते हैं, यही NumPy की असली ताकत है।
Exam Point: NumPy = Numerical Python; ndarray = n-dimensional array; List heterogeneous व scattered memory, Array homogeneous व contiguous memory — इसीलिए NumPy तेज़।
9.1

Array बनाना — NumPy से पहली मुलाक़ात

सबसे पहले import numpy as np — फिर कई तरीकों से arrays बना सकते हैं।
🐍 List से Array बनाना▶ Run
import numpy as np

arr = np.array([10, 20, 30, 40])
print(arr)
print(type(arr))
OUTPUT[10 20 30 40]
<class 'numpy.ndarray'>

🏗️ Ready-made Array Creators

🐍 zeros, ones, arange, linspace▶ Run
print(np.zeros(4))          # 4 zeros
print(np.ones(3))           # 3 ones
print(np.arange(1, 10, 2))  # 1 se 10 tak, 2-2 ke gap se
print(np.linspace(0, 1, 5)) # 0 se 1 tak 5 barabar bante hue points
OUTPUT[0. 0. 0. 0.]
[1. 1. 1.]
[1 3 5 7 9]
[0. 0.25 0.5 0.75 1. ]
🐍 full() व eye() — कोई custom value / Identity Matrix▶ Run
print(np.full(4, 7))      # 4 elements, sabki value 7
print(np.eye(3))           # 3x3 Identity Matrix (diagonal par 1)
OUTPUT[7 7 7 7]
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
Exam Point: np.array() list को array में बदलता है; np.zeros()/ones() भरे हुए arrays; np.full(n, value) दी गई value से भरा array; np.eye(n) Identity Matrix (diagonal पर 1, बाकी 0); np.arange(start,stop,step) — range() जैसा; np.linspace(start,stop,n) — n बराबर बँटे points।
9.2

Array Attributes — Array के बारे में जानकारी

हर array कुछ properties बताता है — shape, size, dtype, ndim — इनसे array की "पहचान" मिलती है।
Attributeक्या बताता है
shape(rows, columns) — array का आकार
sizeकुल elements की संख्या
dtypeData type (int64, float64...)
ndimDimensions की संख्या (1D, 2D...)
🐍 सारे attributes एक साथ▶ Run
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])

print("Shape:", arr.shape)
print("Size:", arr.size)
print("Dtype:", arr.dtype)
print("Dimensions:", arr.ndim)
OUTPUTShape: (2, 3)
Size: 6
Dtype: int64
Dimensions: 2
Exam Point: shape = (rows, cols) tuple; size = total elements (rows × cols); dtype = data type; ndim = कितने dimensions (1D array का ndim=1, 2D matrix का ndim=2)।
9.3

Indexing व Slicing — List जैसा ही, पर तेज़

Chapter 5 में सीखी indexing/slicing की technique NumPy arrays पर भी वैसे ही चलती है — 0 से शुरू, negative index पीछे से, slicing में stop exclude।
🐍 1D Array Indexing व Slicing▶ Run
import numpy as np
arr = np.array([10, 20, 30, 40, 50])

print(arr[0])       # pehla
print(arr[-1])      # aakhri
print(arr[1:4])     # index 1,2,3
print(arr[::2])     # har 2nd element
OUTPUT10
50
[20 30 40]
[10 30 50]

🎯 Boolean Indexing — Array का जादू (List में नहीं होता!)

🐍 Condition से सीधे filter करना▶ Run
marks = np.array([45, 78, 92, 34, 88, 55])
print(marks > 60)              # True/False ka array
print(marks[marks > 60])       # sirf jo condition satisfy kare!
OUTPUT[False True True False True False]
[78 92 88]
समझें: marks > 60 हर element को condition से check करता है और True/False का array देता है — फिर उसी को index की तरह उपयोग करके सिर्फ True वाले elements मिल जाते हैं। List में यह करने के लिए loop/comprehension चाहिए होता!
Exam Point: Indexing/slicing List जैसी ही; Boolean Indexing सिर्फ NumPy में — condition से सीधे filtering, बिना loop के। यह exam का favourite "NumPy की खासियत" question है।
9.4

2D Arrays — Matrix जैसा Data (Rows-Columns)

2D Array = rows व columns वाला data — Chapter 5 की nested list जैसा दिखता है, पर बहुत तेज़ व सुविधाजनक operations के साथ।

2D Array Indexing — arr[row, col]

1 2 3 4 5 6 Row 0 Row 1 Col 0 Col 1 Col 2 arr[1, 1] → 5 (orange वाला box) पहला index = Row 1, दूसरा index = Column 1
🐍 2D Array बनाना व Access करना▶ Run
import numpy as np
matrix = np.array([[1, 2, 3], [4, 5, 6]])

print(matrix)
print(matrix[1, 1])     # row1, col1
print(matrix[0])        # poori pehli row
print(matrix[:, 1])     # poora dusra column
OUTPUT[[1 2 3]
[4 5 6]]
5
[1 2 3]
[2 5]
समझें: matrix[:, 1] में : = "सभी rows", 1 = "column index 1" — यानी हर row के column-1 वाले elements की list निकल आई (2 और 5)।

➕ Matrix Operations

🐍 दो matrices जोड़ना व गुणा करना▶ Run
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

print(A + B)              # element-wise addition
print(A * B)              # element-wise multiplication
print(np.dot(A, B))       # matrix multiplication (asli wali!)
OUTPUT[[ 6 8]
[10 12]]
[[ 5 12]
[21 32]]
[[19 22]
[43 50]]

🔄 Transpose — Rows को Columns बनाना

🐍 .T या transpose() से Matrix घुमाना▶ Run
matrix = np.array([[1, 2, 3], [4, 5, 6]])
print("Original shape:", matrix.shape)
print(matrix.T)                    # ya np.transpose(matrix)
print("Transpose shape:", matrix.T.shape)
OUTPUTOriginal shape: (2, 3)
[[1 4]
[2 5]
[3 6]]
Transpose shape: (3, 2)

📐 axis Parameter — Row-wise या Column-wise Calculation

2D array में sum()/mean() पूरे array का एक जवाब देते हैं — पर axis parameter से हर row या हर column का अलग-अलग जवाब मिलता है! axis=0 = हर column मिलाकर (नीचे की ओर); axis=1 = हर row मिलाकर (आगे की ओर)।
🐍 axis=0 vs axis=1 — Exam का पक्का Question▶ Run
marks = np.array([[80, 90], [70, 60], [95, 85]])   # 3 students, 2 subjects

print(marks.sum())          # SABKA total
print(marks.sum(axis=0))    # HAR SUBJECT ka total (column-wise)
print(marks.sum(axis=1))    # HAR STUDENT ka total (row-wise)
OUTPUT480
[245 235]
[170 130 180]
समझें: axis=0 ने हर column को ऊपर से नीचे जोड़ा (Subject-1 का total 80+70+95=245, Subject-2 का 90+60+85=235)। axis=1 ने हर row को बाएँ से दाएँ जोड़ा (Student-1: 80+90=170)। यही axis का असली मतलब है — याद रखने की trick: axis=0 "नीचे गिराओ", axis=1 "साथ में मिलाओ"।
Exam Point: matrix[row, col] या matrix[row][col] दोनों चलते हैं; matrix[:, col] पूरा column, matrix[row, :] पूरी row। A*B element-wise (साधारण गुणा), np.dot(A,B) असली matrix multiplication। .T या transpose() से rows-columns स्वैप; axis=0 column-wise, axis=1 row-wise calculation।
9.5

Array Operations — बिना Loop के पूरा Array Process

Vectorized Operations = पूरे array पर एक साथ operation, कोई loop नहीं चाहिए — यही NumPy की main power है।
🐍 Arithmetic Operations — सीधे Array पर▶ Run
import numpy as np
arr = np.array([10, 20, 30, 40])

print(arr + 5)      # har element me 5 jodo
print(arr - 5)
print(arr * 2)
print(arr / 10)
print(arr ** 2)
OUTPUT[15 25 35 45]
[ 5 15 25 35]
[20 40 60 80]
[1. 2. 3. 4.]
[ 100 400 900 1600]

📊 Statistical Functions — Data Science का आधार

🐍 sum, mean, max, min, std एक साथ▶ Run
marks = np.array([78, 92, 65, 88, 55])
print("Sum:", marks.sum())
print("Mean:", marks.mean())
print("Max:", marks.max())
print("Min:", marks.min())
print("Std Dev:", round(marks.std(), 2))
OUTPUTSum: 378
Mean: 75.6
Max: 92
Min: 55
Std Dev: 13.5

📍 argmax() व argmin() — सबसे बड़ा/छोटा कहाँ है?

🐍 Value नहीं, INDEX चाहिए तो▶ Run
marks = np.array([78, 92, 65, 88, 55])
print("Max value:", marks.max())
print("Max kahan hai (index):", marks.argmax())
print("Min kahan hai (index):", marks.argmin())
OUTPUTMax value: 92
Max kahan hai (index): 1
Min kahan hai (index): 4
समझें: max() सिर्फ value बताता है (92); argmax() बताता है वह value किस index पर बैठी है (index 1) — किसने सबसे ज़्यादा marks लाए यह पता करने के लिए बहुत उपयोगी!

⚠️ copy() vs साधारण Assignment — बड़ा Trap!

NumPy में b = a लिखने से (List की तरह ही) दोनों एक ही array को refer करते हैं — एक बदलने पर दूसरा भी बदल जाता है! असली independent copy के लिए .copy() ज़रूरी है।
🐍 बिना copy() — दोनों जुड़े रहते हैं▶ Run
a = np.array([1, 2, 3])
b = a              # SIRF reference — Chapter 5 ke aliasing jaisa!
b[0] = 100
print("a:", a)      # a bhi badal gaya!
print("b:", b)
OUTPUTa: [100 2 3]
b: [100 2 3]
🐍 copy() से — असली independent array▶ Run
a = np.array([1, 2, 3])
b = a.copy()        # ab dono ALAG hain
b[0] = 100
print("a:", a)       # a surakshit rahi!
print("b:", b)
OUTPUTa: [1 2 3]
b: [100 2 3]

🔢 Two Arrays के बीच Operations

🐍 Element-wise — position के हिसाब से▶ Run
a = np.array([1, 2, 3])
b = np.array([10, 20, 30])
print(a + b)     # position-by-position: 1+10, 2+20, 3+30
OUTPUT[11 22 33]
Exam Point: arr + n, arr * n जैसे scalar operations हर element पर लागू होते हैं; दो arrays के बीच +,-,*,/ position-by-position (element-wise) चलते हैं। sum(), mean(), max(), min(), std() — बिना loop के पूरे array पर। argmax()/argmin() — largest/smallest की index देते हैं (value नहीं)। b = a reference बनाता है (दोनों जुड़े); b = a.copy() independent copy देता है — यह Chapter 5 के list aliasing जैसा ही खतरा है।
9.6

Broadcasting — अलग-अलग Size के Arrays का मेल

Broadcasting = NumPy की वह क्षमता जिससे अलग shape के arrays के बीच भी operations हो सकते हैं — छोटे array को "फैलाकर" (broadcast करके) बड़े जैसा बना दिया जाता है।

Broadcasting — छोटा Array बड़े जैसा "फैल" जाता है

1 2 3 array [1,2,3] + 5 scalar 5 ↓ 5, तीनों जगह "फैल" गया ↓ 5 5 5 6 7 8 Result: [6, 7, 8]
🐍 Broadcasting — Scalar से Array तक▶ Run
import numpy as np
arr = np.array([1, 2, 3])
result = arr + 5     # 5 teeno positions par "broadcast" hua
print(result)
OUTPUT[6 7 8]
🐍 Broadcasting — 2D Array + 1D Array▶ Run
matrix = np.array([[1, 2, 3], [4, 5, 6]])
row = np.array([10, 20, 30])
print(matrix + row)   # row har matrix-row par broadcast hui
OUTPUT[[11 22 33]
[14 25 36]]
Exam Point: Broadcasting से बिना loop के, बिना shape match किए भी operations चलते हैं — छोटा array/scalar अपने आप बड़े shape में फैल जाता है। यह NumPy का सबसे powerful व favourite exam concept है।
9.7

Useful Functions — रोज़ काम आने वाले NumPy Tools

Functionकाम
reshape()Array का shape बदलना
sort()Array sort करना
concatenate()दो arrays जोड़ना
np.where()Condition के आधार पर values चुनना
flatten()2D को 1D में बदलना
🐍 reshape व sort▶ Run
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
matrix = arr.reshape(2, 3)     # 1D ko 2x3 me badla
print(matrix)

nums = np.array([5, 2, 8, 1])
print(np.sort(nums))
OUTPUT[[1 2 3]
[4 5 6]]
[1 2 5 8]
🐍 np.where — Condition से values चुनना▶ Run
marks = np.array([45, 78, 55, 90])
result = np.where(marks >= 60, "Pass", "Fail")
print(result)
OUTPUT['Fail' 'Pass' 'Fail' 'Pass']

➕ Array में जोड़ना/हटाना — append(), insert(), delete()

List के append()/insert() जैसे ही, पर NumPy में ये functions हैं (np.append आदि) — array को modify नहीं करते, हमेशा नया array return करते हैं!
🐍 np.append(), np.insert(), np.delete()▶ Run
arr = np.array([10, 20, 30])

added = np.append(arr, 40)         # aakhir me jodna
print("append:", added)

inserted = np.insert(arr, 1, 99)   # index 1 par 99 daalna
print("insert:", inserted)

deleted = np.delete(arr, 0)         # index 0 hatana
print("delete:", deleted)

print("Original arr abhi bhi wahi hai:", arr)
OUTPUTappend: [10 20 30 40]
insert: [10 99 20 30]
delete: [20 30]
Original arr abhi bhi wahi hai: [10 20 30]
समझें: List के append()/insert() original list को बदल देते हैं (in-place); पर NumPy के np.append()/np.insert()/np.delete() original array को छूते ही नहीं — हमेशा नया array बनाकर return करते हैं। Result को variable में रखना ज़रूरी है, वरना बदलाव खो जाएगा!

📚 Stacking — Arrays को जोड़ना (vstack, hstack)

🐍 vstack() — ऊपर-नीचे जोड़ना; hstack() — बगल-बगल जोड़ना▶ Run
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

print(np.vstack((a, b)))    # vertically (rows ban jate hain)
print(np.hstack((a, b)))    # horizontally (ek line me jud jate hain)
OUTPUT[[1 2 3]
[4 5 6]]
[1 2 3 4 5 6]
Exam Point: reshape(rows, cols) — कुल elements match होने चाहिए (2×3=6 ही चलेगा); np.where(condition, if_true, if_false) एक साथ पूरे array पर if-else जैसा काम करता है। np.append()/insert()/delete() — List methods जैसे दिखते हैं पर original नहीं बदलते, नया array देते हैं। vstack() rows की तरह जोड़ता (vertical), hstack() एक line में जोड़ता (horizontal)।
9.8

🎯 Output-Based Questions — NumPy पर Tricky सवाल

Vectorized operations व broadcasting के questions सबसे ज़्यादा confuse करते हैं — पहले खुद सोचिए!

Q1. Vectorized Multiplication

🐍 Output बताइए▶ Run
import numpy as np
arr = np.array([1, 2, 3])
print(arr * 3)
ANSWER[3 6 9]
← हर element को 3 से गुणा — List होता तो [1,2,3,1,2,3,1,2,3] मिलता (repetition)!

Q2. shape Attribute

🐍 Output बताइए▶ Run
import numpy as np
arr = np.array([[1,2,3],[4,5,6]])
print(arr.shape)
ANSWER(2, 3)
← 2 rows, 3 columns।

Q3. Boolean Indexing

🐍 Output बताइए▶ Run
import numpy as np
nums = np.array([12, 45, 7, 89, 23])
print(nums[nums < 30])
ANSWER[12 7 23]
← सिर्फ 30 से कम values filter हुईं।

Q4. Broadcasting Scalar

🐍 Output बताइए▶ Run
import numpy as np
arr = np.array([2, 4, 6])
print(arr - 1)
ANSWER[1 3 5]
← 1 हर element पर broadcast हुआ (हर element से 1 घटा)।

Q5. 2D Column Access

🐍 Output बताइए▶ Run
import numpy as np
m = np.array([[1,2],[3,4],[5,6]])
print(m[:, 0])
ANSWER[1 3 5]
← सभी rows का column 0 — पहला column।

Q6. reshape() की Condition

🐍 क्या यह चलेगा?▶ Run
import numpy as np
arr = np.array([1,2,3,4,5])
print(arr.reshape(2,3))
ANSWERValueError: cannot reshape array of size 5 into shape (2,3)
← 5 elements हैं, 2×3=6 चाहिए — mismatch से error!

Q7. mean() Calculation

🐍 Output बताइए▶ Run
import numpy as np
arr = np.array([10, 20, 30, 40])
print(arr.mean())
ANSWER25.0
← (10+20+30+40)/4 = 100/4 = 25.0।

Q8. np.where() Logic

🐍 Output बताइए▶ Run
import numpy as np
n = np.array([3, 8, 15, 2])
print(np.where(n % 2 == 0, "Even", "Odd"))
ANSWER['Odd' 'Even' 'Odd' 'Even']
← हर element के लिए even/odd check एक साथ।
9.9

Summary — Quick Revision (Exam से पहले पढ़ें)

  • NumPy = Numerical Python; ndarray = n-dimensional array; List से तेज़ (homogeneous, contiguous memory)।
  • Array बनाना: np.array(list), np.zeros(n), np.ones(n), np.arange(start,stop,step), np.linspace(start,stop,n)।
  • Attributes: shape (rows,cols), size (total elements), dtype (data type), ndim (dimensions की संख्या)।
  • Indexing/Slicing List जैसी ही; Boolean Indexing — condition से सीधे filter (arr[arr > 60]), सिर्फ NumPy में।
  • 2D Arrays: arr[row, col] या arr[row][col]; arr[:, col] पूरा column; arr[row, :] पूरी row; np.dot() असली matrix multiplication।
  • Vectorized Operations: arr + n, arr * n — बिना loop पूरे array पर; sum(), mean(), max(), min(), std() सांख्यिकी functions।
  • Broadcasting: छोटा array/scalar अपने आप बड़े shape में "फैलकर" operation करता है — NumPy की सबसे बड़ी खासियत।
  • Useful functions: reshape() shape बदलना (elements count match ज़रूरी), sort(), concatenate(), flatten(), np.where(condition, true_val, false_val)।
9.10

Model Questions — 50 MCQs + 15 Theory Questions

❓ A. Multiple Choice Questions (50)

#प्रश्न
1

NumPy का पूरा नाम है —

(a) Numeric Python(b) Numerical Python(c) Number Python(d) Numbering Python
✔ सही उत्तर: (b) Numerical Python
2

NumPy array का data type कहलाता है —

(a) list(b) tuple(c) ndarray(d) matrix
✔ सही उत्तर: (c) ndarrayn-dimensional array।
3

NumPy को import करने का standard तरीका —

(a) import numpy(b) import numpy as np(c) from numpy import *(d) numpy.import()
✔ सही उत्तर: (b) import numpy as npnp alias सबसे common है।
4

List से NumPy array तेज़ क्यों है?

(a) कम elements रखता है(b) Homogeneous व contiguous memory(c) सिर्फ numbers रखता है इसलिए(d) कोई कारण नहीं
✔ सही उत्तर: (b) Homogeneous व contiguous memory
5

List को array में बदलने का function —

(a) np.list()(b) np.array()(c) np.convert()(d) np.make()
✔ सही उत्तर: (b) np.array()
6

np.zeros(3) का output —

(a) [0 0 0](b) [0. 0. 0.](c) [1 1 1](d) Error
✔ सही उत्तर: (b) [0. 0. 0.]Default float type होता है।
7

np.arange(1, 10, 2) का output —

(a) [1 3 5 7 9](b) [1 2 3 4 5 6 7 8 9](c) [2 4 6 8](d) [1 10]
✔ सही उत्तर: (a) [1 3 5 7 9]range() जैसा — stop exclude।
8

Array का shape बताने वाला attribute —

(a) size(b) shape(c) dtype(d) ndim
✔ सही उत्तर: (b) shape
9

Array के कुल elements बताने वाला attribute —

(a) shape(b) len(c) size(d) count
✔ सही उत्तर: (c) size
10

Array का data type बताने वाला attribute —

(a) type(b) dtype(c) datatype(d) kind
✔ सही उत्तर: (b) dtype
11

np.array([[1,2],[3,4]]).ndim का output —

(a) 1(b) 2(c) 4(d) 0
✔ सही उत्तर: (b) 22D array।
12

1D array का ndim होता है —

(a) 0(b) 1(c) 2(d) निर्भर करता है
✔ सही उत्तर: (b) 1
13

arr = np.array([10,20,30]); arr[1] का output —

(a) 10(b) 20(c) 30(d) Error
✔ सही उत्तर: (b) 20Index 0-based, इसलिए index 1 = दूसरा element।
14

Array slicing में stop index —

(a) शामिल होता है(b) शामिल नहीं होता(c) हमेशा -1(d) हमेशा 0
✔ सही उत्तर: (b) शामिल नहीं होताList slicing जैसा ही rule।
15

Boolean Indexing का उदाहरण —

(a) arr[0](b) arr[arr > 10](c) arr[:5](d) arr[-1]
✔ सही उत्तर: (b) arr[arr > 10]Condition से filter — सिर्फ NumPy में।
16

Boolean Indexing List में सीधे चलता है क्या?

(a) हाँ(b) नहीं(c) कभी-कभी(d) सिर्फ छोटी lists में
✔ सही उत्तर: (b) नहींList के लिए loop/comprehension चाहिए।
17

2D array में matrix[1,2] का मतलब —

(a) row 2, col 1(b) row 1, col 2(c) sirf index 12(d) Error
✔ सही उत्तर: (b) row 1, col 2
18

matrix[:, 0] क्या देता है?

(a) पहली row(b) पहला column(c) पूरा matrix(d) आखिरी row
✔ सही उत्तर: (b) पहला column
19

matrix[1, :] क्या देता है?

(a) दूसरा column(b) दूसरी row(c) पहली row(d) Error
✔ सही उत्तर: (b) दूसरी row
20

Element-wise multiplication के लिए operator —

(a) *(b) np.dot()(c) @(d) matmul only
✔ सही उत्तर: (a) *np.dot() असली matrix multiplication के लिए।
21

असली Matrix Multiplication के लिए function —

(a) *(b) np.dot()(c) +(d) np.add()
✔ सही उत्तर: (b) np.dot()
22

arr = np.array([1,2,3]); print(arr + 10) का output —

(a) [11 12 13](b) [1 2 3 10](c) Error(d) [10 10 10]
✔ सही उत्तर: (a) [11 12 13]Broadcasting से हर element में 10 जुड़ा।
23

Vectorized Operation का मतलब —

(a) Loop से operation(b) पूरे array पर एक साथ, बिना loop(c) सिर्फ एक element पर(d) कोई operation नहीं
✔ सही उत्तर: (b) पूरे array पर एक साथ, बिना loop
24

arr.sum() क्या देता है?

(a) पहला element(b) सभी elements का योग(c) सबसे बड़ा element(d) elements की गिनती
✔ सही उत्तर: (b) सभी elements का योग
25

arr.mean() क्या देता है?

(a) योग(b) औसत(c) maximum(d) minimum
✔ सही उत्तर: (b) औसत
26

arr.std() क्या बताता है?

(a) Standard Deviation(b) Sum Total(c) Standard Data(d) Sort Data
✔ सही उत्तर: (a) Standard DeviationData के फैलाव को मापता है।
27

Broadcasting क्या करता है?

(a) Array delete करता है(b) अलग shape के arrays को operation लायक बनाता है(c) Array sort करता है(d) Loop चलाता है
✔ सही उत्तर: (b) अलग shape के arrays को operation लायक बनाता है
28

np.array([1,2,3]) + 5 में 5 —

(a) सिर्फ पहले element में जुड़ता है(b) हर element में broadcast होकर जुड़ता है(c) Error देता है(d) आखिरी element में जुड़ता है
✔ सही उत्तर: (b) हर element में broadcast होकर जुड़ता है
29

Array shape बदलने वाला function —

(a) resize()(b) reshape()(c) change()(d) transform()
✔ सही उत्तर: (b) reshape()
30

6 elements वाला array किस shape में reshape हो सकता है?

(a) (2, 3)(b) (3, 3)(c) (2, 4)(d) (5, 1)
✔ सही उत्तर: (a) (2, 3)2×3=6 — elements count match होना चाहिए।
31

5 elements को (2,3) में reshape करने पर —

(a) सही चलेगा(b) ValueError(c) खाली array बनेगा(d) पहले 5 elements उपयोग होंगे
✔ सही उत्तर: (b) ValueError5 ≠ 6, mismatch।
32

Array sort करने वाला function —

(a) np.arrange()(b) np.sort()(c) np.order()(d) np.rank()
✔ सही उत्तर: (b) np.sort()
33

2D array को 1D में बदलने वाला function —

(a) reshape()(b) flatten()(c) unfold()(d) squeeze()
✔ सही उत्तर: (b) flatten()
34

np.where(condition, x, y) क्या करता है?

(a) Condition true पर x, false पर y(b) हमेशा x देता है(c) हमेशा y देता है(d) Error देता है
✔ सही उत्तर: (a) Condition true पर x, false पर y
35

दो arrays को जोड़ने (concatenate) वाला function —

(a) np.join()(b) np.concatenate()(c) np.merge()(d) np.combine()
✔ सही उत्तर: (b) np.concatenate()
36

np.linspace(0, 10, 5) क्या देता है?

(a) 5 random numbers(b) 0 से 10 तक 5 बराबर बँटे points(c) सिर्फ 0 और 10(d) Error
✔ सही उत्तर: (b) 0 से 10 तक 5 बराबर बँटे points
37

np.ones((2,3)) का shape —

(a) (3,2)(b) (2,3)(c) (6,)(d) (2,2)
✔ सही उत्तर: (b) (2,3)दिया गया tuple ही shape बनता है।
38

Array के negative index का मतलब —

(a) Error(b) पीछे से गिनती(c) हमेशा 0(d) Random access
✔ सही उत्तर: (b) पीछे से गिनतीarr[-1] = आखिरी element।
39

Array और List दोनों mutable हैं क्या?

(a) दोनों mutable हैं(b) दोनों immutable हैं(c) सिर्फ Array mutable(d) सिर्फ List mutable
✔ सही उत्तर: (a) दोनों mutable हैं
40

NumPy array के elements होते हैं —

(a) Mixed types (heterogeneous)(b) एक ही type (homogeneous)(c) हमेशा strings(d) हमेशा booleans
✔ सही उत्तर: (b) एक ही type (homogeneous)
41

Array पर for loop से iterate करना possible है क्या?

(a) नहीं(b) हाँ, List जैसा ही(c) सिर्फ 1D arrays में(d) कभी नहीं
✔ सही उत्तर: (b) हाँ, List जैसा ही
42

np.array([1,2,3]).dtype संभावित output —

(a) int64(b) list(c) array(d) numpy
✔ सही उत्तर: (a) int64System के अनुसार int32/int64 हो सकता है।
43

arr.max() क्या देता है?

(a) सबसे छोटा element(b) सबसे बड़ा element(c) योग(d) औसत
✔ सही उत्तर: (b) सबसे बड़ा element
44

arr.min() क्या देता है?

(a) सबसे बड़ा element(b) सबसे छोटा element(c) योग(d) count
✔ सही उत्तर: (b) सबसे छोटा element
45

दो arrays a=[1,2] व b=[3,4] का a+b —

(a) [1,2,3,4](b) [4,6](c) [3,8](d) Error
✔ सही उत्तर: (b) [4,6]Element-wise addition — position के हिसाब से।
46

NumPy किस field में सबसे ज़्यादा उपयोग होती है?

(a) Web Design(b) Data Science/ML(c) Game Development(d) Mobile Apps
✔ सही उत्तर: (b) Data Science/ML
47

np.array vs list — कौन ज़्यादा memory-efficient है?

(a) List(b) NumPy Array(c) दोनों बराबर(d) निर्भर करता है
✔ सही उत्तर: (b) NumPy Array
48

List में mixed data types (int, string साथ) —

(a) रख सकते हैं(b) कभी नहीं रख सकते(c) सिर्फ numbers रख सकते हैं(d) Error देता है
✔ सही उत्तर: (a) रख सकते हैंNumPy array में नहीं — वह homogeneous है।
49

arr[::-1] NumPy array पर क्या करता है?

(a) पहला element(b) पूरा array reverse(c) Sort करता है(d) Error
✔ सही उत्तर: (b) पूरा array reverseList slicing जैसा ही व्यवहार।
50

NumPy की सबसे बड़ी खासियत —

(a) सिर्फ 1D arrays support करना(b) Fast vectorized operations व broadcasting(c) सिर्फ strings रखना(d) धीमा पर सुरक्षित होना
✔ सही उत्तर: (b) Fast vectorized operations व broadcasting

📝 B. 15 Theory Questions (Short Answers)

  1. NumPy क्या है? इसकी ज़रूरत क्यों है?NumPy (Numerical Python) एक library है जो fast, memory-efficient arrays (ndarray) देती है। Data Science, ML व scientific computing में बड़ी मात्रा में numerical data को तेज़ी से process करने के लिए ज़रूरी है।
  2. NumPy Array और Python List में 4 अंतर लिखिए।List mixed types रख सकती है, Array सिर्फ एक type (homogeneous); List धीमी, Array तेज़; List operations के लिए loop चाहिए, Array vectorized (बिना loop); List scattered memory, Array contiguous memory।
  3. NumPy array कैसे बनाते हैं? 3 तरीके लिखिए।np.array(list) — list से; np.zeros(n)/np.ones(n) — भरे हुए arrays; np.arange(start,stop,step) — range जैसा; np.linspace(start,stop,n) — बराबर बँटे points।
  4. Array के 4 मुख्य attributes लिखिए।shape (rows,columns का tuple), size (कुल elements), dtype (data type), ndim (dimensions की संख्या)।
  5. Boolean Indexing क्या है? उदाहरण दीजिए।Condition से array को सीधे filter करना — जैसे arr[arr > 60] सिर्फ 60 से बड़े elements देता है। List में यह करने के लिए loop/comprehension चाहिए होता।
  6. 2D Array में element कैसे access करते हैं?arr[row, col] या arr[row][col] दोनों से — पहला index row चुनता है, दूसरा column। arr[:, col] पूरा column देता है, arr[row, :] पूरी row।
  7. Element-wise multiplication और Matrix multiplication में अंतर बताइए।Element-wise (A * B) — position-by-position साधारण गुणा; Matrix multiplication (np.dot(A, B)) — असली linear algebra matrix multiplication, अलग नियम से।
  8. Vectorized Operation क्या है? उदाहरण दीजिए।पूरे array पर एक साथ operation करना, बिना loop लिखे — जैसे arr * 2 हर element को double कर देता है, जबकि list में यही काम के लिए loop चाहिए होता।
  9. Broadcasting क्या है? समझाइए।अलग shape के arrays/scalars के बीच operations करने की NumPy की क्षमता — छोटे array या scalar को अपने आप बड़े array के shape में "फैलाकर" (broadcast करके) operation किया जाता है। जैसे [1,2,3] + 5 = [6,7,8]।
  10. Statistical functions (sum, mean, max, min, std) का उपयोग लिखिए।arr.sum() — योग; arr.mean() — औसत; arr.max()/min() — सबसे बड़ा/छोटा; arr.std() — standard deviation (data का फैलाव)।
  11. reshape() function क्या करता है? क्या सावधानी रखनी चाहिए?Array का shape बदलता है — जैसे 1D को 2D में। सावधानी: नए shape के elements की कुल संख्या पुराने array के बराबर होनी चाहिए, वरना ValueError आती है (जैसे 5 elements को (2,3) में नहीं बदल सकते)।
  12. np.where() function समझाइए।np.where(condition, value_if_true, value_if_false) — पूरे array पर एक साथ if-else जैसा काम करता है। जैसे marks पर Pass/Fail label लगाना np.where(marks>=60, "Pass", "Fail") से एक line में हो जाता है।
  13. flatten() function क्या करता है?किसी 2D (या अधिक dimensions वाले) array को 1D array में बदल देता है — सभी elements एक ही row/line में आ जाते हैं। Data को simple sequence में process करने के लिए उपयोगी।
  14. NumPy array indexing/slicing List से कैसे मिलती-जुलती है?0-based indexing, negative index पीछे से गिनती, slicing [start:stop:step] — ये सब List जैसे ही काम करते हैं। अतिरिक्त सुविधा — Boolean Indexing, जो List में नहीं होती।
  15. Concatenate function का उपयोग व syntax लिखिए।np.concatenate((array1, array2)) — दो या अधिक arrays को जोड़कर एक नया बड़ा array बनाता है। Tuple के रूप में arrays पास करने होते हैं।
Revision Tip: Array vs List का अंतर, Broadcasting, reshape() की size-match शर्त, और Boolean Indexing — ये 4 concepts हर exam में सबसे ज़्यादा पूछे जाते हैं। Section 9.8 के output questions ज़रूर दोहराएँ — M3-R5 का यह आख़िरी revision है!
FAQ

अक्सर पूछे जाने वाले प्रश्न

NumPy क्या है और इसकी ज़रूरत क्यों है?
NumPy (Numerical Python) एक library है जो fast, memory-efficient arrays (ndarray) देती है। Data Science, Machine Learning व scientific computing में उपयोग होती है। List से बहुत तेज़ है क्योंकि यह fixed data type के contiguous memory में data रखती है।
NumPy Array और Python List में क्या अंतर है?
List mixed data types रख सकती है, धीमी है, और element-wise operations के लिए loop चाहिए। NumPy Array सिर्फ एक data type रखती है (homogeneous), बहुत तेज़ है, और vectorized operations (बिना loop) सीधे पूरे array पर करती है — जैसे arr * 2।
Broadcasting क्या है?
Broadcasting NumPy की वह क्षमता है जिससे अलग-अलग shape के arrays पर भी operations हो सकते हैं — छोटे array को अपने आप बड़े array के shape में "फैलाया" जाता है। जैसे [1,2,3] + 5 में 5 को हर element पर automatically apply किया जाता है।
2D NumPy Array में indexing कैसे होती है?
arr[row, col] या arr[row][col] दोनों तरीकों से — पहला index row चुनता है, दूसरा column। जैसे arr[1, 2] second row के third column का element देता है। shape attribute से (rows, columns) पता चलता है।
NumPy array कैसे बनाते हैं?
import numpy as np के बाद np.array([1,2,3]) से list को array में बदलते हैं। np.zeros(), np.ones(), np.arange(), np.linspace() जैसे functions से भी सीधे arrays बना सकते हैं।

🎉 बधाई हो! M3-R5 Python के सभी 9 Chapters पूरे हुए!

Introduction to Programming से लेकर NumPy Basics तक — पूरा Python syllabus कवर हो गया। अब Mock Test से अपनी तैयारी परखें!

🧩 Mock Test शुरू करें ➜