π ΠΠ°ΠΊ ΡΡΠΊΠΎΡΠΈΡΡ numpy ΠΈ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΡΡΡΡ ΡΠ°Π³ΠΎΠ² πββοΈ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΊΠΎΡΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ NumPy, ΡΠ»Π΅Π΄ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠΎΠ²Π΅ΡΠ°ΠΌ:
- ΠΠ΅ΠΊΡΠΎΡΠΈΠ·ΡΠΉΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ: ΠΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΊΠ»ΠΎΠ² ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° Π²Π΅ΠΊΡΠΎΡΠ°Ρ ΠΈ ΠΌΠ°ΡΡΠΈΡΠ°Ρ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ, Π²ΠΌΠ΅ΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π°Π΄ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ NumPy: ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° NumPy ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ
np.sum
,np.mean
,np.max
Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ. - ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ: ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΅Π³ΠΎ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΊΠΎΡΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅Π³Π°Π΅ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ.
- ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²: ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΡΡΠ°ΡΠ½ΡΠΌ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠΏΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ
np.copy
ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°array.copy()
Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ Π·Π°ΡΡΠ°ΡΠ°ΠΌΠΈ.
ΠΡΠΈΠΌΠ΅Ρ:
import numpy as np
# ΠΠ΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a + b
# ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ NumPy
arr = np.array([1, 2, 3, 4, 5])
sum_arr = np.sum(arr)
mean_arr = np.mean(arr)
max_arr = np.max(arr)
# ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
size = 1000
pre_allocated_arr = np.empty(size)
for i in range(size):
# ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ pre_allocated_arr
# ΠΠ·Π±Π΅Π³Π°Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
original_arr = np.array([1, 2, 3])
copied_arr = np.copy(original_arr)
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΡΡΠΊΠΎΡΠΈΡΡ numpy
ΠΠ°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°. ΠΡ Π·Π΄Π΅ΡΡ, ΡΡΠΎΠ±Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ Π²Π°ΠΌ ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΏΠΎΡΠΎΠ±Π°Ρ ΡΠΆΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ numpy. ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ!
ΠΠ΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ΄Π°
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΡΠΊΠΎΡΠΈΡΡ numpy - ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡ. ΠΠ΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ°Π·Ρ Π½Π°Π΄ ΡΠ΅Π»ΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ , Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΈΡ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎ. ΠΡΠΎ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° numpy ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
import numpy as np
# ΠΠ»ΠΎΡ
ΠΎ
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.zeros(3)
for i in range(3):
c[i] = a[i] + b[i]
# Π₯ΠΎΡΠΎΡΠΎ
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a + b
Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΠΊΠ»Π°, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π»ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². ΠΡΠΎΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ numpy Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²Π΅ΠΊΡΠΎΡΠ½ΠΎΠ΅ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡΠΎΠ΄ΠΊΠ°ΡΡΠΈΠ½Π³Π°
ΠΡΠΎΠ΄ΠΊΠ°ΡΡΠΈΠ½Π³ - ΡΡΠΎ ΠΌΠΎΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ numpy, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΎΡΠΌΠ°ΠΌΠΈ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ. ΠΡΠΎΠ΄ΠΊΠ°ΡΡΠΈΠ½Π³ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΎΡΠΌΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°Π»ΠΈ Π΄ΡΡΠ³ Π΄ΡΡΠ³Ρ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π»ΠΈΡΠ½ΠΈΡ ΡΠΈΠΊΠ»ΠΎΠ² ΠΈ ΡΠ»ΡΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
ΠΡΠΈΠΌΠ΅Ρ:
import numpy as np
# ΠΠ»ΠΎΡ
ΠΎ
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([1, 2, 3])
c = np.zeros((2, 3))
for i in range(2):
for j in range(3):
c[i,j] = a[i,j] + b[j]
# Π₯ΠΎΡΠΎΡΠΎ
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([1, 2, 3])
c = a + b
Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΠΈΠΊΠ»ΠΎΠ². ΠΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π±ΡΠΎΠ΄ΠΊΠ°ΡΡΠΈΠ½Π³ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π½Π°Π΄ ΡΠ΅Π»ΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ. ΠΡΠΎΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΡΡΡΠ΅Π΅ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π΅ΠΊΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° numpy ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π΅ΠΊΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΊΠ»ΠΎΠ². ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π½Π° C/C++ ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° ΡΠΈΡΡΠΎΠΌ Python.
ΠΡΠΈΠΌΠ΅Ρ:
import numpy as np
# ΠΠ»ΠΎΡ
ΠΎ
a = np.array([1, 2, 3, 4, 5])
result = np.zeros(5)
for i in range(5):
result[i] = np.sin(a[i])
# Π₯ΠΎΡΠΎΡΠΎ
a = np.array([1, 2, 3, 4, 5])
result = np.sin(a)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ np.sin() Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠΈΠ½ΡΡΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΊΠ»Π°, ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΊ ΡΠ΅Π»ΠΎΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π½Π°ΠΌ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π½Π΅Π½ΡΠΆΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎ. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Π΅ΠΊΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΡΠΊΠΎΡΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ NumPy ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ (ufunc)
NumPy ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ (ufunc), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ. Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²Π΅ΠΊΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½ΠΎ, ΡΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΡΠΈΠΌΠ΅Ρ:
import numpy as np
# ΠΠ»ΠΎΡ
ΠΎ
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.zeros(3)
for i in range(3):
c[i] = np.add(a[i], b[i])
# Π₯ΠΎΡΠΎΡΠΎ
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.add(a, b)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ np.add() Π΄Π»Ρ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π²ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². ΠΡΠΎΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π»ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΎΠ΄Π½ΠΈΠΌ ΠΊΠΎΡΠΎΡΠΊΠΈΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΌ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΠ²Π½ΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠΈ
ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π°Π΄ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΠ²Π½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π»ΠΈΡΠ½ΠΈΡ ΡΠΈΠΊΠ»ΠΎΠ² ΠΈ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΡΠΎΠ³ΡΠ΅ΡΡΠΈΠ²Π½Π°Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΡΡΠ»ΠΎΠ²ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ:
import numpy as np
# ΠΠ»ΠΎΡ
ΠΎ
a = np.array([1, 2, 3, 4, 5])
result = np.array([])
for i in range(len(a)):
if a[i] % 2 == 0:
result = np.append(result, a[i])
# Π₯ΠΎΡΠΎΡΠΎ
a = np.array([1, 2, 3, 4, 5])
result = a[a % 2 == 0]
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΠ²Π½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΊΠ»Π° ΠΈ ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΡΠΌΠΎ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠΈ. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΡΠΌ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ
ΠΠ½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ numpy, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ JIT (Just-In-Time) ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Numba. ΠΠ½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΌΠ΅ΡΠ½ΠΎ ΡΡΠΊΠΎΡΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
ΠΡΠΈΠΌΠ΅Ρ:
import numpy as np
from numba import jit
# ΠΠ»ΠΎΡ
ΠΎ
@jit
def sum_array(a):
sum = 0
for i in range(len(a)):
sum += a[i]
return sum
# Π₯ΠΎΡΠΎΡΠΎ
@jit(nopython=True)
def sum_array(a: np.ndarray) -> int:
sum = 0
for i in range(len(a)):
sum += a[i]
return sum
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠΈΠΏΠ° Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
Π Π΅Π·ΡΠΌΠ΅
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠ° ΡΡΠ°ΡΡΡ ΠΏΠΎΠΌΠΎΠ³Π»Π° Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΡΠΊΠΎΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ numpy. ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡ, Π±ΡΠΎΠ΄ΠΊΠ°ΡΡΠΈΠ½Π³, Π²Π΅ΠΊΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΠ²Π½Π°Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ ΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ - ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
Π£Π΄Π°ΡΠΈ Π² Π²Π°ΡΠΈΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡΡ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ numpy!