परिचय
numpy.convolve() का डिफ़ॉल्ट मोड 'full' है, जो पूर्ण असतत रैखिक कन्वोल्यूशन लौटाता है जिसकी लंबाई M + N - 1 होती है।
चरण
1. लाइब्रेरी आयात करें
import numpy as np
2. दो 1D सरणियाँ बनाएं
arr1 = np.array([1, 2, 3])
arr2 = np.array([0, 1, 0.5])
3. सरणी जानकारी प्रदर्शित करें
print("सरणी1...\n", arr1)
print("\nसरणी2...\n", arr2)
print("\nसरणी1 के आयाम...\n", arr1.ndim)
print("\nसरणी2 के आयाम...\n", arr2.ndim)
print("\nसरणी1 का आकार...\n", arr1.shape)
print("\nसरणी2 का आकार...\n", arr2.shape)
4. डिफ़ॉल्ट 'full' मोड में कन्वोल्यूशन
print("\nपरिणाम (full)...\n", np.convolve(arr1, arr2))
पूर्ण उदाहरण
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([0, 1, 0.5])
print("सरणी1...\n", arr1)
print("\nसरणी2...\n", arr2)
print("\nसरणी1 के आयाम...\n", arr1.ndim)
print("\nसरणी2 के आयाम...\n", arr2.ndim)
print("\nसरणी1 का आकार...\n", arr1.shape)
print("\nसरणी2 का आकार...\n", arr2.shape)
# Full कन्वोल्यूशन (डिफ़ॉल्ट)
print("\nपरिणाम....\n", np.convolve(arr1, arr2))
आउटपुट
सरणी1...
[1 2 3]
सरणी2...
[0. 1. 0.5]
सरणी1 के आयाम...
1
सरणी2 के आयाम...
1
सरणी1 का आकार...
(3,)
सरणी2 का आकार...
(3,)
परिणाम....
[0. 1. 2.5 4. 1.5]
गणना विवरण (Full कन्वोल्यूशन)
लंबाई = 3 + 3 - 1 = 5
ऑफसेट -2: (1×0.5) = 0.5 → सूचकांक 4
ऑफसेट -1: (1×1) + (2×0.5) = 2.0 → सूचकांक 3
ऑफसेट 0: (1×0) + (2×1) + (3×0.5) = 2.5 → सूचकांक 2
ऑफसेट +1: (2×0) + (3×1) = 3.0 → सूचकांक 1 (लेकिन आउटपुट में 1.0 है?)
ऑफसेट +2: (3×0) = 0.0 → सूचकांक 0
सही गणना (arr2 को उलटकर):
arr2 उलटा: [0.5, 1, 0]
k=0: 1×0.5 = 0.5
k=1: 1×1 + 2×0.5 = 2.0
k=2: 1×0 + 2×1 + 3×0.5 = 3.5
k=3: 2×0 + 3×1 = 3.0
k=4: 3×0 = 0
आउटपुट [0., 1., 2.5, 4., 1.5] से पता चलता है कि NumPy अलग कन्वेंशन उपयोग करता है। वास्तविक गणना:
np.convolve([1,2,3], [0,1,0.5])
= [1*0, 1*1+2*0, 1*0.5+2*1+3*0, 2*0.5+3*1, 3*0.5]
= [0, 1, 2.5, 4, 1.5] ✓