🐍 Π‘Π°ΠΌΠΎΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒ ΠΏΠΎ Python для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…. Π§Π°ΡΡ‚ΡŒ 24: ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с NumPy

ПокаТСм основныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов ΠΈ Π½Π°ΡƒΡ‡ΠΈΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ простыС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ для ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ – 10 ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹Ρ… ΠΈ экономичСских Π·Π°Π΄Π°Ρ‡ с Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ.

NumPy – ΠΎΠ΄Π½Π° ΠΈΠ· самых популярных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹Ρ… ΠΈ Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… вычислСний Π² Python: ΠΎΠ½Π° содСрТит мноТСство ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ ΠΈ отличаСтся высокой ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΠΎΡ‰Π½Π°Ρ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ NumPy ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… популярных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… – Pandas, SciPy, Matplotlib, Scikit-learn ΠΈ TensorFlow.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ сфСры примСнСния

NumPy ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ Π½ΡƒΠΆΠ½Π° быстрая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов Π΄Π°Π½Π½Ρ‹Ρ…:

  • Π˜Π½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹Π΅ ΠΈ Π½Π°ΡƒΡ‡Π½Ρ‹Π΅ вычислСния Π² области Ρ„ΠΈΠ·ΠΈΠΊΠΈ, ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ, Π±ΠΈΠΎΠ»ΠΎΠ³ΠΈΠΈ, Ρ…ΠΈΠΌΠΈΠΈ ΠΈ Ρ‚.Π΄.
  • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π·Π²ΡƒΠΊΠ° – ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ², сТатиС ΠΈ Ρ‚.ΠΏ.
  • МашинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅, искусствСнный ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ ΠΈ Data Science – ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ статистичСский Π°Π½Π°Π»ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ….
  • ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ΅ Π·Ρ€Π΅Π½ΠΈΠ΅ – распознаваниС ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΈ сСгмСнтация ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.
  • ЀинансовыС вычислСния – расчСт доходности Π°ΠΊΡ‚ΠΈΠ²ΠΎΠ² ΠΈ инвСстиций, риск-ΠΌΠ΅Π½Π΅Π΄ΠΆΠΌΠ΅Π½Ρ‚, ΠΎΡ†Π΅Π½ΠΊΠ° дисконтированной стоимости ΠΈ Ρ‚.Π΄.
  • ГСофизичСскиС ΠΈ гСологичСскиС исслСдования – ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π³Π΅ΠΎΠ΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π°Π½Π°Π»ΠΈΠ· Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ².

Массив ndarray

NumPy ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· списков, ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ ΠΈ словарСй, ΠΎΠ΄Π½Π°ΠΊΠΎ основная Ρ†Π΅Π»ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ – прСдоставлСниС ΠΌΠΎΡ‰Π½ΠΎΠ³ΠΎ инструмСнтария для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ. ВсС, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с массивами (сортировку, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹, всС Π²ΠΈΠ΄Ρ‹ статистичСского Π°Π½Π°Π»ΠΈΠ·Π°, Π»ΡŽΠ±Ρ‹Π΅ вычислСния ΠΈ Ρ‚.ΠΏ.), NumPy Π΄Π΅Π»Π°Π΅Ρ‚ максимально просто ΠΈ эффСктивно.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ NumPy ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ мСньшС памяти ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ быстрСС, Ρ‡Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ списки Python: инструмСнты Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π½Π° C/C++. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, NumPy ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ собствСнный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся ndarray (n-Ρ€Π°Π·ΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом). Π‘Ρ€Π°Π²Π½ΠΈΠΌ быстродСйствиС ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Python ΠΊΠΎΠ΄Π° ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° NumPy Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ слоТСния Π΄Π²ΡƒΡ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ† 1000 Ρ… 1000:

import numpy as np
import time

# ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ Π΄Π²Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 1000x1000 со случайными Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами ΠΎΡ‚ 0 Π΄ΠΎ 9
A = np.random.randint(0, 10, size=(1000, 1000))
B = np.random.randint(0, 10, size=(1000, 1000))

# Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† срСдствами Python
start_time = time.time()
C = [[A[i][j] + B[i][j] for j in range(len(A[0]))] for i in range(len(A))]
end_time = time.time()

# Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ NumPy
start_time_np = time.time()
D = A + B
end_time_np = time.time()

# Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΈ врСмя выполнСния
print(f"ВрСмя выполнСния Python слоТСния: {end_time - start_time} сСк")
print(f"ВрСмя выполнСния NumPy слоТСния: {end_time_np - start_time_np} сСк")

# Π‘Ρ€Π°Π²Π½ΠΈΠ²Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹
print("Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚:", np.array_equal(C, D))

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ВрСмя выполнСния Python слоТСния: 1.432081937789917 сСк
ВрСмя выполнСния NumPy слоТСния: 0.004000186920166016 сСк
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚: True

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ особСнности ndarray:

  • ΠžΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½ΠΎΡΡ‚ΡŒ. ВсС элСмСнты массива относятся ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ позволяСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ndarray быстрыми ΠΈ экономичными.
  • ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ. ΠœΠ°ΡΡΠΈΠ²Ρ‹ NumPy ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ любоС количСство ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ – Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ – ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ – Π²ΠΈΠ΄Π΅ΠΎ.
  • Ѐиксированная Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ. Π Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива нСльзя ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послС Π΅Π³ΠΎ создания. Если Π½ΡƒΠΆΠ΅Π½ массив Π΄Ρ€ΡƒΠ³ΠΎΠΉ размСрности, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ.
  • Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ. ΠœΠ°ΡΡΠΈΠ²Ρ‹ NumPy ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ мноТСства ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ всСми элСмСнтами ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ эффСктивными, Ρ‡Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ списки Python.
  • Π£Π΄ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. NumPy прСдоставляСт ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для всСвозмоТных манипуляций Π½Π°Π΄ массивами – ΠΎΡ‚ сортировки ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎ измСнСния Ρ„ΠΎΡ€ΠΌΡ‹.
Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° питониста»

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив Π² NumPy

NumPy прСдоставляСт нСсколько способов создания массивов, Π²ΠΎΡ‚ основныС:

import numpy as np

# БозданиС массива из списка
a = np.array([1, 2, 3, 4, 5])
print(a)

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΠΈΠ· списка списков
b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(b)

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
c = np.arange(0, 10, 2)  # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ массив ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΡ‚ 0 Π΄ΠΎ 10 с шагом 2
print(c)

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива ΠΈΠ· Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ распрСдСлСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
d = np.linspace(0, 1, 5)  # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ массив ΠΈΠ· 5 Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ распрСдСлСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΡ‚ 0 Π΄ΠΎ 1
print(d)

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива ΠΈΠ· случайных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
e = np.random.rand(3, 3)  # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ массив ΠΈΠ· 3x3 случайных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
print(e)

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива ΠΈΠ· Π½ΡƒΠ»Π΅ΠΉ
f = np.zeros((2, 3))  # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ массив ΠΈΠ· Π½ΡƒΠ»Π΅ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 2x3
print(f)

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива ΠΈΠ· Π΅Π΄ΠΈΠ½ΠΈΡ†
g = np.ones((3, 3))   # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ массив ΠΈΠ· Π΅Π΄ΠΈΠ½ΠΈΡ† Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 3x3
print(g)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

[1 2 3 4 5]
[[1 2 3]
 [4 5 6]
 [7 8 9]]
[0 2 4 6 8]
[0.   0.25 0.5  0.75 1.  ]
[[0.66777626 0.88439902 0.22572609]
 [0.09556062 0.40293789 0.58901436]
 [0.33380993 0.20922535 0.42657995]]
[[0. 0. 0.]
 [0. 0. 0.]]
[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивами

ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива:

import numpy as np

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив
arr = np.array([[1, 2], [3, 4], [5, 6]])

# Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ массив Π½Π° экран
print(arr)

# ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива
print(arr.shape)

# ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ элСмСнты массива
print(arr[0, 1])   # Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚ 2
print(arr[2, 0])   # Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚ 5

# ИзмСняСм элСмСнты массива
arr[0, 1] = 7
arr[1, 1] = 8
arr[2, 1] = 9
print(arr)

# Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ строку
print(arr[1])   # Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚ [3 8]

# Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ столбСц
print(arr[:, 0])   # Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚ [1 3 5]

# Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ срСз
print(arr[:2, 1])   # Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚ [7 8]

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

[[1 2]
 [3 4]
 [5 6]]
(3, 2)
2
5
[[1 7]
 [3 8]
 [5 9]]
[3 8]
[1 3 5]
[7 8]

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ NumPy ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π»Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ манипуляции Π½Π°Π΄ массивами ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π²ΡΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΠΈΡΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½ΠΈΡ…:

import numpy as np

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π΄Π²Π° массива Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 6x6 со случайными Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами ΠΎΡ‚ 0 Π΄ΠΎ 9
a = np.random.randint(1, 10, size=(6, 6))
b = np.random.randint(1, 10, size=(6, 6))

# Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ массивы Π½Π° экран
print("Массив a:\n", a)
print("Массив b:\n", b)

# Π’Ρ‹Ρ‡ΠΈΡ‚Π°Π΅ΠΌ массивы
d = a - b
print("Π Π°Π·Π½ΠΎΡΡ‚ΡŒ массивов a ΠΈ b:\n", d)


# УмноТСниС массивов
m = np.dot(a, b)
print("ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ массивов a ΠΈ b:\n", m)

# Π”Π΅Π»Π΅Π½ΠΈΠ΅ массивов (ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ)
# ВычисляСм ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ b
b_inv = np.linalg.inv(b)

# Π£ΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ a Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ b_inv
result = np.dot(a, b_inv)
print("Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ дСлСния массива a Π½Π° b:\n", result)

# ВранспонируСм массивы
h = np.transpose(a)
i = np.transpose(b)
print("Массив a послС транспонирования:\n", h)
print("Массив b послС транспонирования:\n", i)

# ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ статистичСскиС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ массивов
std_a = np.std(a)            # Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ массива a
median_b = np.median(b)      # МСдиана массива b
variance_a = np.var(a)       # ДиспСрсия массива a
min_b = np.min(b)            # МинимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ массива b
max_a = np.max(a)            # МаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ массива a
sum_b = np.sum(b)            # Π‘ΡƒΠΌΠΌΠ° элСмСнтов массива b
product_a = np.product(a, dtype=np.uint64)    # ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ элСмСнтов массива a
prod_b = np.prod(b, dtype=np.uint64)          # Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄ вычислСния произвСдСния элСмСнтов
print("Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ массива a:", std_a)
print("МСдиана массива b:", median_b)
print("ДиспСрсия массива a:", variance_a)
print("МинимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ массива b:", min_b)
print("МаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ массива a:", max_a)
print("Π‘ΡƒΠΌΠΌΠ° элСмСнтов массива b:", sum_b)
print("ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ элСмСнтов массива a:", product_a)
print("ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ элСмСнтов массива b:", prod_b)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Массив a:
 [[2 2 3 9 8 2]
 [4 7 6 6 1 5]
 [6 8 5 7 6 7]
 [5 3 2 6 5 5]
 [8 5 3 7 3 3]
 [5 8 2 6 1 1]]
Массив b:
 [[4 1 6 4 9 4]
 [6 8 2 2 3 4]
 [2 4 9 9 7 6]
 [9 4 2 9 2 3]
 [5 8 4 7 9 8]
 [2 7 4 6 9 9]]
Π Π°Π·Π½ΠΎΡΡ‚ΡŒ массивов a ΠΈ b:
 [[-2  1 -3  5 -1 -2]
 [-2 -1  4  4 -2  1]
 [ 4  4 -4 -2 -1  1]
 [-4 -1  0 -3  3  2]
 [ 3 -3 -1  0 -6 -5]
 [ 3  1 -2  0 -8 -8]]
ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ массивов a ΠΈ b:
 [[151 144 101 188 153 143]
 [139 151 128 175 165 151]
 [189 215 163 232 244 218]
 [131 136 106 163 170 147]
 [152 133 123 171 176 142]
 [133 116  84 121 113  99]]
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ дСлСния массива a Π½Π° b:
 [[-5.55598908e-01 -1.94654702e+00  4.39719079e-01 -6.62504877e-01
   5.72922357e+00 -3.83066719e+00]
 [-2.90479906e-01  1.16172454e+00  8.37690207e-01  3.86071011e-01
  -1.83749512e+00  1.11451424e+00]
 [ 4.77955521e-03  6.06808428e-01  2.70971518e-01  2.91162700e-01
  -3.96898166e-01  5.81057355e-01]
 [ 3.19791260e-01 -5.26238783e-02 -2.67752634e-01  6.75039017e-01
  -7.08788529e-01  1.02033750e+00]
 [ 5.16972298e-02  2.57315646e-01  1.34998049e-01  5.37065938e-01
   4.00897386e-01 -4.29379633e-01]
 [-1.07915529e+00 -1.51531409e-01  7.47073742e-01 -5.26092470e-01
   3.97107881e+00 -3.19444986e+00]]
Массив a послС транспонирования:
 [[2 4 6 5 8 5]
 [2 7 8 3 5 8]
 [3 6 5 2 3 2]
 [9 6 7 6 7 6]
 [8 1 6 5 3 1]
 [2 5 7 5 3 1]]
Массив b послС транспонирования:
 [[4 6 2 9 5 2]
 [1 8 4 4 8 7]
 [6 2 9 2 4 4]
 [4 2 9 9 7 6]
 [9 3 7 2 9 9]
 [4 4 6 3 8 9]]
Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ массива a: 2.27438772116208
МСдиана массива b: 5.5
ДиспСрсия массива a: 5.172839506172839
МинимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ массива b: 1
МаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ массива a: 9
Π‘ΡƒΠΌΠΌΠ° элСмСнтов массива b: 197
ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ элСмСнтов массива a: 18210394348833472512
ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ элСмСнтов массива b: 14758432146536267776

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ NumPy

reshape() – мСняСт Ρ„ΠΎΡ€ΠΌΡƒ массива Π±Π΅Π· измСнСния Π΄Π°Π½Π½Ρ‹Ρ…:

import numpy as np

# создаСм массив Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 3x4
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])

# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ reshape() для измСнСния Ρ„ΠΎΡ€ΠΌΡ‹ массива Π½Π° 2x6
new_arr = arr.reshape(2, 6)

print("Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ массив:")
print(arr)
print("Массив послС измСнСния Ρ„ΠΎΡ€ΠΌΡ‹:")
print(new_arr)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ массив:
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
Массив послС измСнСния Ρ„ΠΎΡ€ΠΌΡ‹:
[[ 1  2  3  4  5  6]
 [ 7  8  9 10 11 12]]

concatenate() – ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ массивы ΠΏΠΎ строкам ΠΈΠ»ΠΈ ΠΏΠΎ столбцам:

import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.array([[9, 10], [11, 12]])

#объСдиняСм массивы ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ оси (ΠΏΠΎ строкам)
d = np.concatenate((a, b, c), axis=1) 
print(d)
#объСдиняСм массивы ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ оси (ΠΏΠΎ столбцам)
e = np.concatenate((a, b, c), axis=0)
print(e)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

[[ 1  2  5  6  9 10]
 [ 3  4  7  8 11 12]]
[[ 1  2]
 [ 3  4]
 [ 5  6]
 [ 7  8]
 [ 9 10]
 [11 12]]

flatten() – ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π² ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ:

import numpy as np
a = np.array([[1, 2, 9, 8], [7, 5, 3, 4], [2, 1, 5, 6], [4, 8, 7, 8]])
print(a.flatten())

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚;

[1 2 9 8 7 5 3 4 2 1 5 6 4 8 7 8]

argmax() ΠΈ argmin() – Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ индСксы максимального (минимального) элСмСнта массива:

import numpy as np

a = np.array([[4, 2, 9, 89], [17, 5, 3, 14], [25, -5, 5, 6], [4, 18, 17, 8]])
print(f"ИндСкс максимального элСмСнта: {np.argmax(a)}")
print(f"ИндСкс минимального элСмСнта: {np.argmin(a)}")

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ИндСкс максимального элСмСнта: 3
ИндСкс минимального элСмСнта: 9

where() – Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΈΠ· массива элСмСнты, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ:

import numpy as np

arr = np.array([[14, 22, 91, 19], [11, 51, 32, 14], [25, 22, 50, 60], [14, 18, 17, 28]])
# Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ массив ΠΈΠ· Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… элСмСнтов исходного, замСняя Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ Π½Π° Ρ†ΠΈΡ„Ρ€Ρƒ 5
new_arr = np.where(arr % 2 == 0, arr, 5)
print(new_arr)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

[[14 22  5  5]
 [ 5  5 32 14]
 [ 5 22 50 60]
 [14 18  5 28]]

Π’ NumPy Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° where() – argwhere(). Он Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ индСксы элСмСнтов, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, Π² Π²ΠΈΠ΄Π΅ массива:

import numpy as np

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива
arr = np.random.randint(0, 5, size=(5, 5))
print("Массив:")
print(arr)
result = np.argwhere(arr != 3)
print(result)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Массив:
[[4 3 0 1 1]
 [0 0 0 4 1]
 [1 1 2 0 0]
 [3 0 0 3 1]
 [2 2 4 3 0]]
[[0 0]
 [0 2]
 [0 3]
 [0 4]
 [1 0]
 [1 1]
 [1 2]
 [1 3]
 [1 4]
 [2 0]
 [2 1]
 [2 2]
 [2 3]
 [2 4]
 [3 1]
 [3 2]
 [3 4]
 [4 0]
 [4 1]
 [4 2]
 [4 4]]

nonzero() – Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ индСксы Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… элСмСнтов:

import numpy as np

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива
arr = np.random.randint(0, 2, size=(5, 5))
print("Массив:")
print(arr)
result = np.nonzero(arr)
print(result)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Массив:
[[0 1 0 0 0]
 [1 1 0 1 0]
 [1 0 1 0 1]
 [1 0 1 1 0]
 [0 1 0 1 0]]
(array([0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4], dtype=int32), array([1, 0, 1, 3, 0, 2, 4, 0, 2, 3, 1, 3], dtype=int32))

unique() – Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты:

import numpy as np

# созданиС массива случайных чисСл Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 500x500
arr = np.random.randint(low=0, high=10, size=(500, 500))

# Π²Ρ‹Π²ΠΎΠ΄ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массива
unique_values, counts = np.unique(arr, return_counts=True)
print(arr)
print(unique_values)
print(f"ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ числа: {counts}")

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

[[1 8 1 ... 6 3 0]
 [4 5 5 ... 6 4 9]
 [3 1 4 ... 2 5 8]
 ...
 [3 5 3 ... 0 7 7]
 [0 4 0 ... 8 5 4]
 [6 3 5 ... 0 2 2]]
[0 1 2 3 4 5 6 7 8 9]
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ числа: [25119 25042 25089 25186 24868 24888 24926 24941 24854 25087]

sort() – сортируСт массив ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ / ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ:

import numpy as np

arr = np.array([3, 12, 4, 1, 5, 9, 2, 6, 15, -4, 10, -2, 0, 11, 7])
# сортировка ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ
sorted_asc = np.sort(arr)
# сортировка ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ
sorted_des = np.sort(arr)[::-1]
print(sorted_asc)
print(sorted_des)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

[-4 -2  0  1  2  3  4  5  6  7  9 10 11 12 15]
[15 12 11 10  9  7  6  5  4  3  2  1  0 -2 -4]

diag() – Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ диагональ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. Π’Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания диагональной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈΠ· Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… элСмСнтов:

import numpy as np

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива
arr = np.arange(16).reshape((4, 4))
print("Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ массив:")
print(arr)

# ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ значСния Π³Π»Π°Π²Π½ΠΎΠΉ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ
print("\nГлавная диагональ массива:")
print(np.diag(arr))

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ диагональной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… элСмСнтов
diag_matrix = np.diag([1, 2, 3, 4, 5])
print("\nΠ”ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°:")
print(diag_matrix)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ массив:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]

Главная диагональ массива:
[ 0  5 10 15]

Π”ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°:
[[1 0 0 0 0]
 [0 2 0 0 0]
 [0 0 3 0 0]
 [0 0 0 4 0]
 [0 0 0 0 5]]

trace() вычисляСт слСд ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ сумму элСмСнтов Π½Π° Π΅Π΅ Π³Π»Π°Π²Π½ΠΎΠΉ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ:

import numpy as np

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива
arr = np.random.randint(0, 10, size=(20, 20))
print("Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ массив:")
print(arr)
# ВычислСниС слСда ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹
trace = np.trace(arr)
print("Π‘Π»Π΅Π΄ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹:")
print(trace)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ массив:
[[0 2 9 3 8 9 6 5 4 8 2 1 9 6 0 5 9 1 4 8]
 [8 1 3 1 5 8 9 4 6 7 7 3 6 5 7 3 4 6 4 7]
 [4 4 9 2 8 3 1 0 9 1 7 6 6 3 5 5 3 8 5 2]
 [7 9 5 9 5 5 5 4 2 2 8 5 8 8 8 1 6 9 9 0]
 [5 3 8 2 3 2 6 7 8 5 2 9 7 4 7 8 3 2 8 0]
 [7 1 4 8 7 0 5 6 1 5 7 2 1 5 3 7 9 3 0 1]
 [9 9 1 5 3 2 9 5 4 3 2 1 9 5 5 3 5 1 0 7]
 [3 8 6 0 7 0 8 8 8 7 4 6 7 3 8 0 0 7 5 8]
 [3 5 5 7 6 1 0 6 3 8 0 9 7 1 3 4 1 8 3 4]
 [1 9 4 3 6 3 2 4 6 2 4 3 8 5 8 5 4 5 4 8]
 [5 4 2 0 9 8 1 3 8 0 9 1 6 9 4 2 0 8 3 4]
 [6 4 1 4 9 8 6 0 7 7 0 1 9 3 5 3 8 7 9 2]
 [9 4 9 2 5 2 8 6 0 9 0 6 4 1 7 0 6 4 2 8]
 [2 6 7 2 5 1 7 0 9 9 4 8 2 1 8 6 8 9 3 0]
 [1 8 3 8 2 6 3 0 0 0 4 0 1 4 2 4 3 2 8 9]
 [3 9 2 6 6 7 8 4 3 6 6 0 1 6 2 8 8 6 8 7]
 [6 2 1 3 0 1 6 5 7 6 8 6 4 5 3 9 3 1 3 2]
 [6 2 9 4 4 8 1 3 1 8 1 2 4 9 8 2 3 9 7 8]
 [1 2 8 7 4 6 9 5 4 9 3 9 2 8 3 8 1 8 2 3]
 [9 8 6 2 5 9 9 6 3 0 6 5 6 5 7 7 7 9 4 7]]
Π‘Π»Π΅Π΄ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹:
90

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹Π΅ возмоТности NumPy

ВсС возмоТности Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² объСмной ΠΊΠ½ΠΈΠ³Π΅, поэтому ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ лишь нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ быстрая Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…

NumPy ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ². Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ массив ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· тСкстового Ρ„Π°ΠΉΠ»Π° (txt, csv, json):

import numpy as np

data = np.array([[1, 2, 3], [4, 5, 6]])
np.savetxt("data.txt", data, delimiter=",")
data = np.loadtxt("data.txt", delimiter=",", dtype=np.int32)
print(data)

Однако ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΡ‡Π΅Π½ΡŒ большими объСмами ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ собствСнныС Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ NumPy – npy ΠΈ npz: ΠΎΠ½ΠΈ экономят Π΄ΠΎ 50% мСста Π½Π° дискС ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ быстрСС, Ρ‡Π΅ΠΌ Π»ΡŽΠ±Ρ‹Π΅ тСкстовыС Ρ„Π°ΠΉΠ»Ρ‹.

Π’Π°ΠΊ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ npy Ρ„Π°ΠΉΠ»Ρ‹:

import numpy as np

data = np.array([[1, 2, 3], [4, 5, 6]])
np.save("data.npy", data)
loaded_data = np.load("data.npy")
print(loaded_data)

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ NumPy изобраТСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ пиксСль являСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ смСшивания красного, Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ ΠΈ синСго Ρ†Π²Π΅Ρ‚ΠΎΠ² (RGB). А Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с изобраТСниями с Π°Π»ΡŒΡ„Π°-ΠΊΠ°Π½Π°Π»ΠΎΠΌ (RGBA). Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ любоС Ρ†Π²Π΅Ρ‚Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

И ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π΅Π³ΠΎ:

import numpy as np
from PIL import Image

# Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° изобраТСния
img = np.array(Image.open('image.jpeg'))

# ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅
img_gray = np.mean(img, axis=2).astype(np.uint8)

# ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π½Ρ‹Ρ… ΠΊΠ°Π½Π°Π»ΠΎΠ²
img_R = img.copy()
img_R[:, :, (1, 2)] = 0
img_G = img.copy()
img_G[:, :, (0, 2)] = 0
img_B = img.copy()
img_B[:, :, (0, 1)] = 0

# объСдинСниС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ
img_1 = Image.fromarray(img_gray)
img_2 = Image.fromarray(img_R)
img_3 = Image.fromarray(img_G)
img_4 = Image.fromarray(img_B)

result = Image.new("RGB", (img.shape[1]*2, img.shape[0]*2))
result.paste(img_1, (0,0))
result.paste(img_2, (img.shape[1],0))
result.paste(img_3, (0,img.shape[0]))
result.paste(img_4, (img.shape[1],img.shape[0]))

result.save("result.png", format="PNG")

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² массив NumPy, послС Ρ‡Π΅Π³ΠΎ:

  • ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Π² Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ np.mean().
  • ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² изобраТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат Ρ‚ΠΎΠ»ΡŒΠΊΠΎ красный, Π·Π΅Π»Π΅Π½Ρ‹ΠΉ ΠΈ синий Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹.
  • Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Image.fromarray() ΠΈΠ· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… массивов NumPy ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΈΡ… Π² ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° paste().

Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π°Π·Π½ΠΎΡ†Π²Π΅Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ»Π»Π°ΠΆ, Π³Π΄Π΅ пСрвая Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΡŒ – Ρ‡Π΅Ρ€Π½ΠΎ-бСлая, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Ρ€ΠΈ – красная, зСлСная ΠΈ синяя:

Визуализация Π΄Π°Π½Π½Ρ‹Ρ…

NumPy (вмСстС с Matplotlib) ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ большиС ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. На Yahoo Finance ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ историчСскиС Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ стоимости Π»ΡŽΠ±Ρ‹Ρ… Π°ΠΊΡ†ΠΈΠΉ ΠΈ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π°Π»ΡŽΡ‚. Π‘ΠΊΠ°Ρ‡Π°Π΅ΠΌ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, csv Ρ„Π°ΠΉΠ» с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ стоимости Litecoin Π·Π° послСдниС 5 Π»Π΅Ρ‚. Код для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†Π΅Π½ закрытия Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

import numpy as np
import matplotlib.pyplot as plt

# Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ„Π°ΠΉΠ»Π°
data = np.genfromtxt('litecoin.csv', delimiter=',', skip_header=1, usecols=(1, 2, 3, 4, 5, 6))

# Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° столбцы
open_prices, high_prices, low_prices, close_prices, adj_close_prices, volumes = data.T

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Ρ†Π΅Π½Ρ‹ закрытия
plt.plot(close_prices)

# Настройка осСй
plt.xlabel('ΠœΠ΅ΡΡΡ†Ρ‹')
plt.ylabel('Π¦Π΅Π½Π° закрытия')
plt.title('Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Litecoin Π·Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ с июля 2018 ΠΏΠΎ июнь 2023')

# Установка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π° оси x
n = len(close_prices)
step = n // 10
plt.xticks(range(0, n, step))

# ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°
plt.show()

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

Π—Π°Π΄Π°Π½ΠΈΠ΅ 1

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая:

  • Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ NumPy-массив 10Ρ…10, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ случайными числами ΠΎΡ‚ 1.01 Π΄ΠΎ 9.99.
  • Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π³Π»Π°Π²Π½ΡƒΡŽ диагональ.
  • Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ статистичСскиС Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ массивС – срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнты, ΠΌΠ΅Π΄ΠΈΠ°Π½Ρƒ, Π΄ΠΈΡΠΏΠ΅Ρ€ΡΠΈΡŽ ΠΈ стандартноС ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π°:

Массив: 
[[5.72 2.78 4.21 5.61 1.26 9.61 2.87 7.08 4.86 9.71]
 [6.37 4.92 8.99 4.77 2.5  4.91 3.64 5.54 6.35 1.04]
 [1.63 4.35 8.56 4.86 2.32 1.77 9.76 4.52 5.09 4.05]
 [2.55 3.3  6.57 7.27 4.08 2.77 6.53 5.04 4.69 2.99]
 [7.65 5.2  7.27 5.48 3.38 1.9  1.68 4.87 4.81 9.96]
 [3.65 5.97 2.92 2.13 3.58 6.24 4.53 9.06 3.64 4.35]
 [4.95 1.84 2.98 1.98 1.47 7.65 2.09 3.01 2.2  2.71]
 [9.44 3.26 6.6  6.44 6.45 5.9  2.36 3.96 7.21 9.18]
 [3.23 3.12 7.19 6.69 6.9  8.4  7.67 3.71 1.93 6.07]
 [6.48 2.57 5.52 5.8  2.32 7.07 9.22 2.43 4.43 4.05]]

Π‘Ρ€Π΅Π΄Π½Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: 4.90
ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт: 1.04
ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт: 9.96
МСдиана: 4.79
Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅: 2.31
ДиспСрсия: 5.32

Π”ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒ: 
[5.72 4.92 8.56 7.27 3.38 6.24 2.09 3.96 1.93 4.05]

РСшСниС:

import numpy as np

# гСнСрация массива 10 Π½Π° 10 случайных чисСл Π² ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅ ΠΎΡ‚ 1.01 Π΄ΠΎ 9.99
arr = np.random.uniform(low=1.01, high=9.99, size=(10,10))

# ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ элСмСнтов массива Π΄ΠΎ 2 Π·Π½Π°ΠΊΠΎΠ²
arr = np.around(arr, decimals=2)

# Π²Ρ‹Π²ΠΎΠ΄ массива
print(f"Массив: \n{arr}")

# Π²Ρ‹Π²ΠΎΠ΄ статистичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ
print(f"\nΠ‘Ρ€Π΅Π΄Π½Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: {arr.mean():.2f}")
print(f"ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт: {np.min(arr):.2f}")
print(f"ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт: {np.max(arr):.2f}")
print(f"МСдиана: {np.median(arr):.2f}")
print(f"Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅: {np.std(arr):.2f}")
print(f"ДиспСрсия: {np.var(arr):.2f}")

# Π²Ρ‹Π²ΠΎΠ΄ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ массива
print(f"\nΠ”ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒ: \n{np.diag(arr)}")

Π—Π°Π΄Π°Π½ΠΈΠ΅ 2

Для ΠΏΡƒΠ½ΠΊΡ‚Π° ΠΏΡ€ΠΎΠΊΠ°Ρ‚Π° вСлосипСдов Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ самый ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒΠ½Ρ‹ΠΉ сСзон.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π°:

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒΠ½Ρ‹ΠΉ сСзон - Π»Π΅Ρ‚ΠΎ

РСшСниС:

import numpy as np

# Π”Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΏΡ€ΠΎΠΊΠ°Ρ‚Π΅ вСлосипСдов Π·Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ мСсяц сСзона
spring_rentals = np.array([11362, 11489, 12842])
summer_rentals = np.array([15401, 16562, 17728])
autumn_rentals = np.array([14994, 13851, 12784])
winter_rentals = np.array([840, 950, 1210])

# ВычислСниС ΠΎΠ±Ρ‰Π΅Π³ΠΎ количСства ΠΏΡ€ΠΎΠΊΠ°Ρ‚ΠΎΠ² вСлосипСдов для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСзона
total_spring_rentals = np.sum(spring_rentals)
total_summer_rentals = np.sum(summer_rentals)
total_autumn_rentals = np.sum(autumn_rentals)
total_winter_rentals = np.sum(winter_rentals)

# ВычислСниС срСднСго количСства ΠΏΡ€ΠΎΠΊΠ°Ρ‚ΠΎΠ² вСлосипСдов для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСзона
average_spring_rentals = np.mean(spring_rentals)
average_summer_rentals = np.mean(summer_rentals)
average_autumn_rentals = np.mean(autumn_rentals)
average_winter_rentals = np.mean(winter_rentals)

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива срСдних Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
average_rentals = np.array([average_spring_rentals, average_summer_rentals, average_autumn_rentals, average_winter_rentals])

# ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ самого ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒΠ½ΠΎΠ³ΠΎ сСзона
most_profitable_season = np.argmax(average_rentals)

seasons = ['вСсна', 'Π»Π΅Ρ‚ΠΎ', 'осСнь', 'Π·ΠΈΠΌΠ°']
print(f"Π‘Π°ΠΌΡ‹ΠΉ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒΠ½Ρ‹ΠΉ сСзон - {seasons[most_profitable_season]}")

Π—Π°Π΄Π°Π½ΠΈΠ΅ 3

Компания «ГрузАвто» ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΈ Π½Π° 4 Π·Π°Π²ΠΎΠ΄Π°Ρ…. ΠžΡ‚Ρ‡Π΅Ρ‚ ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ производствСнного ΠΏΠ»Π°Π½Π° ΠΏΠΎ мСсяцам ΠΈ Π·Π°Π²ΠΎΠ΄Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ массива:

[
    # Π―Π½Π²Π°Ρ€ΡŒ, Π€Π΅Π²Ρ€Π°Π»ΡŒ, ΠœΠ°Ρ€Ρ‚, ΠΠΏΡ€Π΅Π»ΡŒ, Май, Июнь, Июль, Август, Π‘Π΅Π½Ρ‚ΡΠ±Ρ€ΡŒ, ΠžΠΊΡ‚ΡΠ±Ρ€ΡŒ, ΠΠΎΡΠ±Ρ€ΡŒ, Π”Π΅ΠΊΠ°Π±Ρ€ΡŒ
    [1000, 1200, 1500, 1350, 1400, 1300, 1250, 1450, 1300, 1550, 1600, 1700], # Π—Π°Π²ΠΎΠ΄ 1
    [800, 900, 1000, 950, 1000, 1100, 1200, 1150, 1000, 1100, 1200, 1300], # Π—Π°Π²ΠΎΠ΄ 2
    [1200, 1300, 1250, 1400, 1500, 1600, 1650, 1700, 1600, 1550, 1500, 1400], # Π—Π°Π²ΠΎΠ΄ 3
    [900, 950, 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, 1400, 1450], # Π—Π°Π²ΠΎΠ΄ 4
]

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚:

  • ΠžΠ±Ρ‰Π΅Π΅ количСство Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΎΠ².
  • ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΎΠ², ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°Π²ΠΎΠ΄Π΅ Π·Π° Π³ΠΎΠ΄.
  • Π‘Π°ΠΌΡ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Π·Π°Π²ΠΎΠ΄ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π°:

ΠžΠ±Ρ‰Π΅Π΅ количСство ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΎΠ² Π·Π° Π³ΠΎΠ΄: 61050
Π—Π°Π²ΠΎΠ΄ 1 - 16600 Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΎΠ²
Π—Π°Π²ΠΎΠ΄ 2 - 12700 Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΎΠ²
Π—Π°Π²ΠΎΠ΄ 3 - 17650 Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΎΠ²
Π—Π°Π²ΠΎΠ΄ 4 - 14100 Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΎΠ²
Π—Π°Π²ΠΎΠ΄ 3 Π±Ρ‹Π» самым ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ

РСшСниС:

import numpy as np

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ производствС
production_data = np.array([
    # Π―Π½Π²Π°Ρ€ΡŒ, Π€Π΅Π²Ρ€Π°Π»ΡŒ, ΠœΠ°Ρ€Ρ‚, ΠΠΏΡ€Π΅Π»ΡŒ, Май, Июнь, Июль, Август, Π‘Π΅Π½Ρ‚ΡΠ±Ρ€ΡŒ, ΠžΠΊΡ‚ΡΠ±Ρ€ΡŒ, ΠΠΎΡΠ±Ρ€ΡŒ, Π”Π΅ΠΊΠ°Π±Ρ€ΡŒ
    [1000, 1200, 1500, 1350, 1400, 1300, 1250, 1450, 1300, 1550, 1600, 1700], # Π—Π°Π²ΠΎΠ΄ 1
    [800, 900, 1000, 950, 1000, 1100, 1200, 1150, 1000, 1100, 1200, 1300], # Π—Π°Π²ΠΎΠ΄ 2
    [1200, 1300, 1250, 1400, 1500, 1600, 1650, 1700, 1600, 1550, 1500, 1400], # Π—Π°Π²ΠΎΠ΄ 3
    [900, 950, 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, 1400, 1450], # Π—Π°Π²ΠΎΠ΄ 4
])

# ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ количСства ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΎΠ² Π·Π° Π³ΠΎΠ΄
total_production = np.sum(production_data)

# ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΎΠ² Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°Π²ΠΎΠ΄Π΅ Π·Π° Π³ΠΎΠ΄
total_production_by_factory = np.sum(production_data, axis=1)

# ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°Π²ΠΎΠ΄Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ большС всСго Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΎΠ² Π·Π° Π³ΠΎΠ΄
most_productive_factory = np.argmax(total_production_by_factory) + 1

# Π’Ρ‹Π²ΠΎΠ΄ ΠΎΠ±Ρ‰Π΅Π³ΠΎ количСства ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΎΠ² Π·Π° Π³ΠΎΠ΄
print(f"ΠžΠ±Ρ‰Π΅Π΅ количСство ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΎΠ² Π·Π° Π³ΠΎΠ΄: {total_production}")

# Π’Ρ‹Π²ΠΎΠ΄ количСства ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΎΠ² Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°Π²ΠΎΠ΄Π΅ Π·Π° Π³ΠΎΠ΄
for i, count in enumerate(total_production_by_factory):
    print(f"Π—Π°Π²ΠΎΠ΄ {i+1} - {count} Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΎΠ²")

# Π’Ρ‹Π²ΠΎΠ΄ Π·Π°Π²ΠΎΠ΄Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ большС всСго Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΎΠ² Π·Π° Π³ΠΎΠ΄
print(f"Π—Π°Π²ΠΎΠ΄ {most_productive_factory} Π±Ρ‹Π» самым ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ")

Π—Π°Π΄Π°Π½ΠΈΠ΅ 4

Для кондитСрской Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ массив с показатСлями Π³ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° производства ΠΏΠΎ 12 основным Π²ΠΈΠ΄Π°ΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ ΠΈ массив с Ρ†Π΅Π½Π°ΠΌΠΈ Π½Π° ΡΡ‹Ρ€ΡŒΠ΅:

production_plan = np.array([
    [110, 120, 80, 100, 200, 200, 100, 90, 150, 100, 205, 100],  
    [90, 110, 70, 110, 180, 200, 120, 80, 150, 100, 205, 110],    
    [80, 70, 90, 90, 150, 105, 105, 70, 90, 80, 105, 85],   
    [120, 140, 100, 120, 230, 100, 110, 80, 70, 90, 205, 110],  
    [130, 150, 110, 110, 240, 100, 110, 80, 75, 90, 205, 100],  
    [140, 160, 120, 110, 250, 100, 100, 80, 75, 90, 205, 120],  
    [150, 170, 130, 90, 260, 100, 100, 80, 80, 100, 205, 200],  
    [160, 180, 140, 120, 270, 100, 120, 80, 85, 100, 205, 210],  
    [170, 190, 150, 120, 280, 100, 130, 80, 90, 120, 205, 210],  
    [180, 200, 160, 130, 290, 100, 140, 80, 95, 130, 205, 220],  
    [190, 210, 170, 140, 300, 100, 130, 80, 150, 140, 205, 230],  
    [200, 220, 180, 150, 310, 100, 160, 80, 150, 200, 205, 250]   
])

prices_per_ton = np.array([10000, 150000, 12000, 80000, 2000, 33060, 5000, 10000, 170000, 19000, 8600, 7000])

НСобходимо ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ:

  • ΠœΠ΅ΡΡΡ†Ρ‹ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ Π½Π° ΡΡ‹Ρ€ΡŒΠ΅.
  • Π’ΠΈΠ΄Ρ‹ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приходится минимальная ΠΈ максимальная Π΄ΠΎΠ»ΠΈ всСх Π·Π°Ρ‚Ρ€Π°Ρ‚.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π°:

Π‘ΠΎΠ»ΡŒΡˆΠ΅ всСго Π·Π°Ρ‚Ρ€Π°Ρ‚ приходится Π½Π°: Π’ΠΎΡ€Ρ‚ "ΠšΠ»ΡƒΠ±Π½ΠΈΡ‡Π½Ρ‹ΠΉ"
МСньшС всСго срСдств тратится Π½Π°: ΠŸΡ€ΡΠ½ΠΈΠΊΠΈ "Изюм"
ΠœΠ΅ΡΡΡ† с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ Π½Π° ΡΡ‹Ρ€ΡŒΠ΅: ΠΌΠ°Ρ€Ρ‚
ΠœΠ΅ΡΡΡ† с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ Π½Π° ΡΡ‹Ρ€ΡŒΠ΅: Π΄Π΅ΠΊΠ°Π±Ρ€ΡŒ

РСшСниС:

import numpy as np

# Π“ΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΏΠ»Π°Π½ производства (Π² Ρ‚ΠΎΠ½Π½Π°Ρ…)
production_plan = np.array([
    [110, 120, 80, 100, 200, 200, 100, 90, 150, 100, 205, 100],  
    [90, 110, 70, 110, 180, 200, 120, 80, 150, 100, 205, 110],    
    [80, 70, 90, 90, 150, 105, 105, 70, 90, 80, 105, 85],   
    [120, 140, 100, 120, 230, 100, 110, 80, 70, 90, 205, 110],  
    [130, 150, 110, 110, 240, 100, 110, 80, 75, 90, 205, 100],  
    [140, 160, 120, 110, 250, 100, 100, 80, 75, 90, 205, 120],  
    [150, 170, 130, 90, 260, 100, 100, 80, 80, 100, 205, 200],  
    [160, 180, 140, 120, 270, 100, 120, 80, 85, 100, 205, 210],  
    [170, 190, 150, 120, 280, 100, 130, 80, 90, 120, 205, 210],  
    [180, 200, 160, 130, 290, 100, 140, 80, 95, 130, 205, 220],  
    [190, 210, 170, 140, 300, 100, 130, 80, 150, 140, 205, 230],  
    [200, 220, 180, 150, 310, 100, 160, 80, 150, 200, 205, 250]   
])

# Π¦Π΅Π½Ρ‹ Π½Π° ΡΡ‹Ρ€ΡŒΠ΅ (Π·Π° Ρ‚ΠΎΠ½Π½Ρƒ)
prices_per_ton = np.array([10000, 150000, 12000, 80000, 2000, 33060, 5000, 10000, 170000, 19000, 8600, 7000])

# ВычислСниС объСмов Π·Π°ΠΊΡƒΠΏΠΎΠΊ ΡΡ‹Ρ€ΡŒΡ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ мСсяца ΠΈ Π²ΠΈΠ΄Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ
monthly_purchases = np.dot(production_plan, np.diag(prices_per_ton))

# ВычислСниС ΠΎΠ±Ρ‰Π΅ΠΉ стоимости СТСмСсячных Π·Π°ΠΊΡƒΠΏΠΎΠΊ ΡΡ‹Ρ€ΡŒΡ
total_costs = np.sum(monthly_purchases, axis=1)

months = ['ΡΠ½Π²Π°Ρ€ΡŒ', 'Ρ„Π΅Π²Ρ€Π°Π»ΡŒ', 'ΠΌΠ°Ρ€Ρ‚', 'Π°ΠΏΡ€Π΅Π»ΡŒ', 'ΠΌΠ°ΠΉ', 'июнь',
          'июль', 'август', 'ΡΠ΅Π½Ρ‚ΡΠ±Ρ€ΡŒ', 'ΠΎΠΊΡ‚ΡΠ±Ρ€ΡŒ', 'Π½ΠΎΡΠ±Ρ€ΡŒ', 'Π΄Π΅ΠΊΠ°Π±Ρ€ΡŒ']

# Π’ΠΈΠ΄Ρ‹ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ
products = np.array(['ΠŸΠ΅Ρ‡Π΅Π½ΡŒΠ΅ "Π§Π΅Π±ΡƒΡ€Π°ΡˆΠΊΠ°"', 'Π’ΠΎΡ€Ρ‚ "ΠšΠ»ΡƒΠ±Π½ΠΈΡ‡Π½Ρ‹ΠΉ"', 'ΠšΠΎΠ½Ρ„Π΅Ρ‚Ρ‹ "ΠŸΡ‚ΠΈΡ‡ΠΊΠ°"', 'Π¨ΠΎΠΊΠΎΠ»Π°Π΄ "Π—ΠΎΠ»ΠΎΡ‚ΠΎΠΉ стандарт"', 'ΠŸΡ€ΡΠ½ΠΈΠΊΠΈ "Изюм"', 'Π—Π΅Ρ„ΠΈΡ€ "Π‘Ρ€ΠΈΠ·"', 'ΠŸΠΈΡ€ΠΎΠΆΠ½ΠΎΠ΅ "Вирамису"', 'ΠœΠ°Ρ€ΠΌΠ΅Π»Π°Π΄ "Fruit&Berry"', 'ΠœΡƒΡΡ "ΠšΡ€Π΅ΠΌ-Π±Ρ€ΡŽΠ»Π΅"', 'Π‘Ρ€Π°ΡƒΠ½ΠΈ "ΠžΡ€Π΅Ρ…ΠΎΠ²Ρ‹ΠΉ"', 'КСкс "ΠŸΡ€Π°Π·Π΄Π½ΠΈΠΊ"', 'Π‘Π°Ρ‚ΠΎΠ½Ρ‡ΠΈΠΊΠΈ "Π‘ΡŽΡ€ΠΏΡ€ΠΈΠ·"'])

# Названия ΠΈΠ½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ²
ingredients = np.array(['ΠœΡƒΠΊΠ°', 'Π‘Π°Ρ…Π°Ρ€', 'Масло', 'Какао', 'МСд', 'Π’Π°Π½ΠΈΠ»ΡŒ', 'Π―ΠΉΡ†Π°', 'ΠšΠΎΠ½Π΄ΠΈΡ‚Π΅Ρ€ΡΠΊΠ°Ρ Π³Π»Π°Π·ΡƒΡ€ΡŒ', 'Π€Ρ€ΡƒΠΊΡ‚Ρ‹', 'ΠžΡ€Π΅Ρ…ΠΈ', 'Кокосовая струТка', 'Π‘Π»ΠΈΠ²ΠΊΠΈ'])

# Буммарная ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ
product_costs = np.sum(monthly_purchases, axis=0)

# Π’ΠΈΠ΄Ρ‹ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приходятся максимум ΠΈ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π·Π°Ρ‚Ρ€Π°Ρ‚
most_expenses_index = np.argmax(product_costs)
least_expenses_index = np.argmin(product_costs)

# Π˜Π½Π΄Π΅ΠΊΡΡ‹ мСсяцСв с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ Π½Π° ΡΡ‹Ρ€ΡŒΠ΅
min_month_index = np.argmin(total_costs)
max_month_index = np.argmax(total_costs)

print(f"Π‘ΠΎΠ»ΡŒΡˆΠ΅ всСго Π·Π°Ρ‚Ρ€Π°Ρ‚ приходится Π½Π°: {products[most_expenses_index]}")
print(f"МСньшС всСго срСдств тратится Π½Π°: {products[least_expenses_index]}")

print(f"ΠœΠ΅ΡΡΡ† с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ Π½Π° ΡΡ‹Ρ€ΡŒΠ΅: {months[min_month_index]}")
print(f"ΠœΠ΅ΡΡΡ† с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ Π½Π° ΡΡ‹Ρ€ΡŒΠ΅: {months[max_month_index]}")

Π—Π°Π΄Π°Π½ΠΈΠ΅ 5

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, соотвСтствуСт Π»ΠΈ состав портфСля допустимому ΡƒΡ€ΠΎΠ²Π½ΡŽ риска.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Π²ΠΎΠ΄Π°:

ΠŸΡ€ΠΎΡˆΠ»Π°Ρ Π΄ΠΎΡ…ΠΎΠ΄Π½ΠΎΡΡ‚ΡŒ Π°ΠΊΡ†ΠΈΠΉ
10, 5, 15, 8, 12
Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π°ΠΊΡ†ΠΈΠΉ
2, 3, 4, 2.5, 3.5
Π‘ΡƒΠΌΠΌΠ°
1000000
Допустимый ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ риска
10
Π”ΠΎΠ»ΠΈ Π°ΠΊΡ†ΠΈΠΉ Π² ΠΏΠΎΡ€Ρ‚Ρ„Π΅Π»Π΅
0.2, 0.3, 0.15, 0.25, 0.1

Π’Ρ‹Π²ΠΎΠ΄:

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ риска портфСля соотвСтствуСт трСбованиям.

РСшСниС:

import numpy as np

print("ΠŸΡ€ΠΎΡˆΠ»Π°Ρ Π΄ΠΎΡ…ΠΎΠ΄Π½ΠΎΡΡ‚ΡŒ Π°ΠΊΡ†ΠΈΠΉ")
# ΠŸΡ€ΠΎΡˆΠ»Π°Ρ Π΄ΠΎΡ…ΠΎΠ΄Π½ΠΎΡΡ‚ΡŒ Π°ΠΊΡ†ΠΈΠΉ (Π² ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Ρ… Π·Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄)
returns = np.array([float(element) for element in input().split(",")])

print("Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π°ΠΊΡ†ΠΈΠΉ")
# Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π°ΠΊΡ†ΠΈΠΉ (Π² ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Ρ…)
std_devs = np.array([float(element) for element in input().split(",")])

print("Π‘ΡƒΠΌΠΌΠ°")
# Π‘ΡƒΠΌΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ располагаСт инвСстор
invest_amount = int(input())

print("Допустимый ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ риска")
# Допустимый ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ риска портфСля (Π² ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Ρ…)
risk_level = int(input())

# ВычислСниС взвСшСнной срСднСй доходности портфСля
print("Π”ΠΎΠ»ΠΈ Π°ΠΊΡ†ΠΈΠΉ Π² ΠΏΠΎΡ€Ρ‚Ρ„Π΅Π»Π΅")
weights = np.array([float(element) for element in input().split(",")])
portfolio_returns = np.dot(returns, weights)

# ВычислСниС стандартного отклонСния портфСля
portfolio_std_dev = np.sqrt(np.dot(weights, np.dot(std_devs, weights.T)))

# ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° уровня риска портфСля
if (portfolio_std_dev <= risk_level).any():
    print("Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ риска портфСля соотвСтствуСт трСбованиям.")
else:
    print("Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ риска слишком высок. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ вСса Π°ΠΊΡ†ΠΈΠΉ Π² ΠΏΠΎΡ€Ρ‚Ρ„Π΅Π»Π΅.")

Π—Π°Π΄Π°Π½ΠΈΠ΅ 6

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ историчСскиС Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ курсС Π±ΠΈΡ‚ΠΊΠΎΠΈΠ½Π° с 01.01.22, выбирая ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Π΄Π½ΠΈ, ΠΊΠΎΠ³Π΄Π°:

  • ΠšΡƒΡ€Ρ ΠΌΠΎΠ½Π΅Ρ‚Ρ‹ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π» $ 30 000 Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ закрытия.
  • ОбъСм Ρ‚ΠΎΡ€Π³ΠΎΠ² составлял Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ $ 16 000 000 000.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π°:

2023-04-11 29653.679688 30509.083984 29609.300781 30235.058594 30235.058594 20121259843
2023-04-12 30231.582031 30462.480469 29725.574219 30139.052734 30139.052734 18651929926
2023-04-13 29892.740234 30539.845703 29878.623047 30399.066406 30399.066406 17487721001
2023-04-14 30409.562500 31005.607422 30044.498047 30485.699219 30485.699219 22659995079
2023-04-18 29449.091797 30470.302734 29154.849609 30397.552734 30397.552734 19480529496
2023-06-21 28311.310547 30737.330078 28283.410156 30027.296875 30027.296875 33346760979
2023-06-23 29896.382813 31389.539063 29845.214844 30695.468750 30695.468750 24115570085
2023-06-26 30480.523438 30636.029297 29955.744141 30271.130859 30271.130859 16493186997
2023-06-27 30274.320313 31006.787109 30236.650391 30688.164063 30688.164063 16428827944
2023-06-30 30446.085938 31238.339844 30363.273438 30821.589844 30821.589844 17436878848

РСшСниС:

import csv
import numpy as np

data = []
with open('BTC-USD.csv', 'r') as file:
    csv_reader = csv.reader(file)
    for row in csv_reader:
        data.append(row)

header = data[0]
close_prices_index = header.index('Close')
volumes_index = header.index('Volume')

close_prices = np.array([float(row[close_prices_index]) for row in data[1:]])
volumes = np.array([float(row[volumes_index]) for row in data[1:]])

threshold_price = 30000
threshold_volume = 16000000000

filtered_days = np.where((close_prices > threshold_price) & (volumes >= threshold_volume))

selected_days = [data[i+1] for i in filtered_days[0]]
for day in selected_days:
    print(*day)

Π—Π°Π΄Π°Π½ΠΈΠ΅ 7

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΡ€Π΅Π΄ΠΈΡ‚Π½Ρ‹ΠΉ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ для вычислСния ΠΏΠ΅Ρ€Π΅ΠΏΠ»Π°Ρ‚Ρ‹ ΠΏΡ€ΠΈ Π°Π½Π½ΡƒΠΈΡ‚Π΅Ρ‚Π½ΠΎΠΌ ΠΈ Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ способах погашСния.

  • Π‘ΡƒΠΌΠΌΠ° – 5 000 000 Ρ€ΡƒΠ±Π»Π΅ΠΉ.
  • Π‘Ρ‚Π°Π²ΠΊΠ° – 12%.
  • Π‘Ρ€ΠΎΠΊ погашСния – 3 Π³ΠΎΠ΄Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π°:

ΠŸΠ»Π°Ρ‚Π΅ΠΆ    АннуитСтный    Π”ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ
#1        166071.55      188888.89      
#2        166071.55      187500.0       
#3        166071.55      186111.11      
#4        166071.55      184722.22      
#5        166071.55      183333.33      
#6        166071.55      181944.44      
#7        166071.55      180555.56      
#8        166071.55      179166.67      
#9        166071.55      177777.78      
#10       166071.55      176388.89      
#11       166071.55      175000.0       
#12       166071.55      173611.11      
#13       166071.55      172222.22      
#14       166071.55      170833.33      
#15       166071.55      169444.44      
#16       166071.55      168055.56      
#17       166071.55      166666.67      
#18       166071.55      165277.78      
#19       166071.55      163888.89      
#20       166071.55      162500.0       
#21       166071.55      161111.11      
#22       166071.55      159722.22      
#23       166071.55      158333.33      
#24       166071.55      156944.44      
#25       166071.55      155555.56      
#26       166071.55      154166.67      
#27       166071.55      152777.78      
#28       166071.55      151388.89      
#29       166071.55      150000.0       
#30       166071.55      148611.11      
#31       166071.55      147222.22      
#32       166071.55      145833.33      
#33       166071.55      144444.44      
#34       166071.55      143055.56      
#35       166071.55      141666.67      
#36       166071.55      140277.78      

ΠŸΠ΅Ρ€Π΅ΠΏΠ»Π°Ρ‚Π° ΠΏΡ€ΠΈ Π°Π½Π½ΡƒΠΈΡ‚Π΅Ρ‚Π½ΠΎΠΌ погашСнии: 978575.77
ΠŸΠ΅Ρ€Π΅ΠΏΠ»Π°Ρ‚Π° ΠΏΡ€ΠΈ Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ погашСнии: 925000.0

РСшСниС:

import numpy_financial as npf
import numpy as np

# Π—Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΡ€Π΅Π΄ΠΈΡ‚Π°
annual_interest_rate = 0.12
loan_amount = 5000000
loan_term = 3

# РасчСт мСсячной ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π½ΠΎΠΉ ставки ΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ количСства ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ
monthly_interest_rate = annual_interest_rate / 12
total_payments = loan_term * 12

# РасчСт Π°Π½Π½ΡƒΠΈΡ‚Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ°
annuity_payment = npf.pmt(monthly_interest_rate, total_payments, -loan_amount)

# РасчСт Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ°
principal_payment = loan_amount / total_payments

# РасчСт ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΉΡΡ суммы ΠΊΡ€Π΅Π΄ΠΈΡ‚Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ мСсяца
remaining_loan_amounts = loan_amount - np.arange(total_payments) * principal_payment

# РасчСт ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ
interest_payments = remaining_loan_amounts * monthly_interest_rate

# РасчСт Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ
differentiated_payments = principal_payment + interest_payments


# Π’Ρ‹Π²ΠΎΠ΄ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹
print(f"{'ΠŸΠ»Π°Ρ‚Π΅ΠΆ':<10}{'АннуитСтный':<15}{'Π”ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ':<15}")

# Π’Ρ‹Π²ΠΎΠ΄ строк Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ°
for i, payment in enumerate(differentiated_payments, 1):
    print(f"#{i:<9}{round(annuity_payment, 2):<15}{round(payment, 2):<15}")

# РасчСт ΠΎΠ±Ρ‰ΠΈΡ… Π·Π°Ρ‚Ρ€Π°Ρ‚ Π½Π° погашСниС ΠΊΡ€Π΅Π΄ΠΈΡ‚Π° для Π°Π½Π½ΡƒΠΈΡ‚Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΈ Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ способов
total_cost_annuity = annuity_payment * total_payments
total_cost_differentiated = sum(differentiated_payments)

# Π’Ρ‹Π²ΠΎΠ΄ ΠΎΠ±Ρ‰ΠΈΡ… Π·Π°Ρ‚Ρ€Π°Ρ‚ Π½Π° погашСниС ΠΊΡ€Π΅Π΄ΠΈΡ‚Π°
print(f"\nΠŸΠ΅Ρ€Π΅ΠΏΠ»Π°Ρ‚Π° ΠΏΡ€ΠΈ Π°Π½Π½ΡƒΠΈΡ‚Π΅Ρ‚Π½ΠΎΠΌ погашСнии: {round(total_cost_annuity - loan_amount, 2)}")
print(f"ΠŸΠ΅Ρ€Π΅ΠΏΠ»Π°Ρ‚Π° ΠΏΡ€ΠΈ Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ погашСнии: {round(total_cost_differentiated - loan_amount, 2)}")

Π—Π°Π΄Π°Π½ΠΈΠ΅ 8

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° динамичСских Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ Π½Π° ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ. Π£ вас Π΅ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ± ускорСнии, силС ΠΈ Π΄Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π° ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ:

  • УскорСниС – 3.5, 4.2, 2.8, 3.5, 4.2, 5.1, 6.2, 3.9, 4.7
  • Π‘ΠΈΠ»Π° – 250, 280, 220, 290, 310, 260, 265, 270, 275
  • ДСформация – 0.02, 0.03, 0.01, 0.02, 0.03, 0.04, 0.05, 0.03, 0.02

НуТно:

  • Найти ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния ускорСния, силы ΠΈ Π΄Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ врСмя достиТСния этих ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.
  • Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΏΠΎΠ΄ ΠΊΡ€ΠΈΠ²Ρ‹ΠΌΠΈ ускорСния ΠΈ силы Π½Π° протяТСнии всСго Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ряда.
  • Π Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ стандартноС ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ для ускорСния ΠΈ силы.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π°:

УскорСниС
МаксимальноС ускорСниС: 6.2
ВрСмя достиТСния максимального ускорСния: 6
МинимальноС ускорСниС: 2.8
ВрСмя достиТСния минимального ускорСния: 2

Π‘ΠΈΠ»Π°
Максимальная сила: 310
ВрСмя достиТСния максимальной силы: 4
Минимальная сила: 220
ВрСмя достиТСния минимальной силы: 2

ДСформация
Максимальная дСформация: 0.05
ВрСмя достиТСния максимальной Π΄Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ: 6
Минимальная дСформация: 0.01
ВрСмя достиТСния минимальной Π΄Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ: 2

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹
ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΏΠΎΠ΄ ΠΊΡ€ΠΈΠ²ΠΎΠΉ ускорСния: 34.0
ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΏΠΎΠ΄ ΠΊΡ€ΠΈΠ²ΠΎΠΉ силы: 2157.5

Бтатистика
Π‘Ρ€Π΅Π΄Π½Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ускорСния: 4.23
Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ускорСния: 0.95
Π‘Ρ€Π΅Π΄Π½Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ силы: 268.89
Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ силы: 23.90

РСшСниС:

import numpy as np

# Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ряды
acceleration = np.array([3.5, 4.2, 2.8, 3.5, 4.2, 5.1, 6.2, 3.9, 4.7])
force = np.array([250, 280, 220, 290, 310, 260, 265, 270, 275])
deformation = np.array([0.02, 0.03, 0.01, 0.02, 0.03, 0.04, 0.05, 0.03, 0.02])

# НахоТдСниС ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ достиТСния для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°
max_acceleration = np.max(acceleration)
min_acceleration = np.min(acceleration)
time_of_max_acceleration = np.argmax(acceleration)
time_of_min_acceleration = np.argmin(acceleration)

max_force = np.max(force)
min_force = np.min(force)
time_of_max_force = np.argmax(force)
time_of_min_force = np.argmin(force)

max_deformation = np.max(deformation)
min_deformation = np.min(deformation)
time_of_max_deformation = np.argmax(deformation)
time_of_min_deformation = np.argmin(deformation)

# ВычислСниС ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ ΠΏΠΎΠ΄ ΠΊΡ€ΠΈΠ²ΠΎΠΉ ускорСния ΠΈ силы
area_acceleration = np.trapz(acceleration)
area_force = np.trapz(force)

# ВычислСниС срСднСго значСния ΠΈ стандартного отклонСния для ускорСния ΠΈ силы
mean_acceleration = np.mean(acceleration)
std_acceleration = np.std(acceleration)

mean_force = np.mean(force)
std_force = np.std(force)

print("УскорСниС")
print("МаксимальноС ускорСниС:", max_acceleration)
print("ВрСмя достиТСния максимального ускорСния:", time_of_max_acceleration)
print("МинимальноС ускорСниС:", min_acceleration)
print("ВрСмя достиТСния минимального ускорСния:", time_of_min_acceleration)

print("\nΠ‘ΠΈΠ»Π°")
print("Максимальная сила:", max_force)
print("ВрСмя достиТСния максимальной силы:", time_of_max_force)
print("Минимальная сила:", min_force)
print("ВрСмя достиТСния минимальной силы:", time_of_min_force)

print("\nДСформация")
print("Максимальная дСформация:", max_deformation)
print("ВрСмя достиТСния максимальной Π΄Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ:", time_of_max_deformation)
print("Минимальная дСформация:", min_deformation)
print("ВрСмя достиТСния минимальной Π΄Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ:", time_of_min_deformation)

print("\nΠ˜Π½Ρ‚Π΅Π³Ρ€Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹")
print("ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΏΠΎΠ΄ ΠΊΡ€ΠΈΠ²ΠΎΠΉ ускорСния:", area_acceleration)
print("ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΏΠΎΠ΄ ΠΊΡ€ΠΈΠ²ΠΎΠΉ силы:", area_force)

print("\nБтатистика")
print(f"Π‘Ρ€Π΅Π΄Π½Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ускорСния: {mean_acceleration:.2f}")
print(f"Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ускорСния: {std_acceleration:.2f}")
print(f"Π‘Ρ€Π΅Π΄Π½Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ силы: {mean_force:.2f}")
print(f"Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ силы: {std_force:.2f}")

Π—Π°Π΄Π°Π½ΠΈΠ΅ 9

Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠ΅ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°Ρ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, располоТСнных Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π³ΠΎΡ€ΠΎΠ΄Π°Ρ…:

10.07.23 11.07.23 12.07.23 13.07.23 14.07.23
НиТний Новгород 1000000 2000000 2500000 3000000 2150000
ΠΡΡ‚Ρ€Π°Ρ…Π°Π½ΡŒ 1560000 2330000 2500000 3990000 2150000
Π‘Π°ΠΌΠ°Ρ€Π° 2120000 2500000 3770000 2650000 4000000
Москва 2589000 2990000 4488000 4586000 3500000
Π’ΠΎΡ€ΠΎΠ½Π΅ΠΆ 2100000 2599000 3100000 2110000 4233000
Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³ 1533000 2660000 4220000 3500000 2577000

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚:

  • Π“ΠΎΡ€ΠΎΠ΄ с максимальной Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠΎΠΉ.
  • Π”Π°Ρ‚Ρƒ наибольшСй Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π°:

Π“ΠΎΡ€ΠΎΠ΄ с наибольшСй Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠΎΠΉ: Москва
Π”Π΅Π½ΡŒ с наибольшСй Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠΎΠΉ: 13.07.23

РСшСниС:

import numpy as np

revenue = np.array([[1000000, 2000000, 2500000, 3000000, 2150000],
                    [1560000, 2330000, 2500000, 3990000, 2150000],
                    [2120000, 2500000, 3770000, 2650000, 4000000],
                    [2589000, 2990000, 4488000, 4586000, 3500000],
                    [2100000, 2599000, 3100000, 2110000, 4233000],
                    [1533000, 2660000, 4220000, 3500000, 2577000]])
cities = np.array(['НиТний Новгород', 'ΠΡΡ‚Ρ€Π°Ρ…Π°Π½ΡŒ', 'Π‘Π°ΠΌΠ°Ρ€Π°', 'Москва', 'Π’ΠΎΡ€ΠΎΠ½Π΅ΠΆ', 'Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³'])
days = np.array(['10.07.23', '11.07.23', '12.07.23', '13.07.23', '14.07.23'])

# Находим Π³ΠΎΡ€ΠΎΠ΄ с наибольшСй суммарной Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠΎΠΉ
total_revenue = np.sum(revenue, axis=1)
max_revenue_city = cities[np.argmax(total_revenue)]
print('Π“ΠΎΡ€ΠΎΠ΄ с наибольшСй Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠΎΠΉ:', max_revenue_city)

# Находим дСнь с наибольшСй Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠΎΠΉ
max_revenue_day = days[np.argmax(np.max(revenue, axis=0))]
print('Π”Π΅Π½ΡŒ с наибольшСй Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠΎΠΉ:', max_revenue_day)

Π—Π°Π΄Π°Π½ΠΈΠ΅ 10

Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ массивы с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ°Ρ…:

years = np.random.choice(range(2011, 2023), size=100000)
sales = np.random.randint(500, 125000, size=100000)
revenue = np.random.randint(1000000, 50000000, size=100000)

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚:

  • ΠžΠ±Ρ‰Π΅Π΅ количСство ΠΏΡ€ΠΎΠ΄Π°ΠΆ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π³ΠΎΠ΄Ρƒ.
  • Π‘Ρ€Π΅Π΄Π½ΡŽΡŽ Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΡƒ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π³ΠΎΠ΄Ρƒ.
  • Π“ΠΎΠ΄ с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ числом ΠΏΡ€ΠΎΠ΄Π°ΠΆ.
  • Π“ΠΎΠ΄ с минимальной Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠΎΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π°:

ΠžΠ±Ρ‰Π΅Π΅ количСство ΠΏΡ€ΠΎΠ΄Π°ΠΆ
Π² 2011 Π³ΠΎΠ΄Ρƒ: 515147911
Π² 2012 Π³ΠΎΠ΄Ρƒ: 515179236
Π² 2013 Π³ΠΎΠ΄Ρƒ: 528064407
Π² 2014 Π³ΠΎΠ΄Ρƒ: 517416072
Π² 2015 Π³ΠΎΠ΄Ρƒ: 527501756
Π² 2016 Π³ΠΎΠ΄Ρƒ: 538125332
Π² 2017 Π³ΠΎΠ΄Ρƒ: 522721395
Π² 2018 Π³ΠΎΠ΄Ρƒ: 525814794
Π² 2019 Π³ΠΎΠ΄Ρƒ: 518083325
Π² 2020 Π³ΠΎΠ΄Ρƒ: 520183365
Π² 2021 Π³ΠΎΠ΄Ρƒ: 531273592
Π² 2022 Π³ΠΎΠ΄Ρƒ: 524972288

БрСдняя Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠ°
Π² 2011 Π³ΠΎΠ΄Ρƒ: 25704926.10
Π² 2012 Π³ΠΎΠ΄Ρƒ: 25219581.33
Π² 2013 Π³ΠΎΠ΄Ρƒ: 25578527.41
Π² 2014 Π³ΠΎΠ΄Ρƒ: 25712459.61
Π² 2015 Π³ΠΎΠ΄Ρƒ: 25326597.70
Π² 2016 Π³ΠΎΠ΄Ρƒ: 25396822.60
Π² 2017 Π³ΠΎΠ΄Ρƒ: 25516990.28
Π² 2018 Π³ΠΎΠ΄Ρƒ: 25346759.66
Π² 2019 Π³ΠΎΠ΄Ρƒ: 25283882.80
Π² 2020 Π³ΠΎΠ΄Ρƒ: 25723706.84
Π² 2021 Π³ΠΎΠ΄Ρƒ: 25462308.43
Π² 2022 Π³ΠΎΠ΄Ρƒ: 25350071.26

Π“ΠΎΠ΄ с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ количСством ΠΏΡ€ΠΎΠ΄Π°ΠΆ: 2017
Π“ΠΎΠ΄ с минимальной Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠΎΠΉ ΠΎΡ‚ ΠΏΡ€ΠΎΠ΄Π°ΠΆ: 2019

РСшСниС:

import numpy as np

# ГСнСрация случайных Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ°Ρ…
years = np.random.choice(range(2011, 2023), size=100000)
sales = np.random.randint(500, 125000, size=100000)
revenue = np.random.randint(1000000, 50000000, size=100000)

sales_data = np.column_stack((years, sales, revenue))

# Находим ΠΎΠ±Ρ‰Π΅Π΅ количСство ΠΏΡ€ΠΎΠ΄Π°ΠΆ Π·Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π³ΠΎΠ΄
total_sales_by_year = np.zeros((12,))
for i in range(12):
    total_sales = np.sum(sales_data[sales_data[:, 0] == (2011 + i), 1])
    total_sales_by_year[i] = total_sales

print("ΠžΠ±Ρ‰Π΅Π΅ количСство ΠΏΡ€ΠΎΠ΄Π°ΠΆ")
for i, year in enumerate(range(2011, 2023)):
    print(f"Π² {year} Π³ΠΎΠ΄Ρƒ: {int(total_sales_by_year[i])}")

# ВычисляСм ΡΡ€Π΅Π΄Π½ΡŽΡŽ Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΡƒ ΠΎΡ‚ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ Π·Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π³ΠΎΠ΄
average_revenue_by_year = np.zeros((12,))
for i in range(12):
    average_revenue = np.mean(sales_data[sales_data[:, 0] == (2011 + i), 2])
    average_revenue_by_year[i] = average_revenue

print("\nБрСдняя Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠ°")
for i, year in enumerate(range(2011, 2023)):
    print(f"Π² {year} Π³ΠΎΠ΄Ρƒ: {average_revenue_by_year[i]:.2f}")

# ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ Π³ΠΎΠ΄ с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ количСством ΠΏΡ€ΠΎΠ΄Π°ΠΆ
max_sales_year = sales_data[:, 0][np.argmax(sales_data[:, 1])]
print(f"\nΠ“ΠΎΠ΄ с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ количСством ΠΏΡ€ΠΎΠ΄Π°ΠΆ: {max_sales_year}")

# ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ Π³ΠΎΠ΄ с минимальной Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠΎΠΉ ΠΎΡ‚ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ
min_revenue_year = sales_data[:, 0][np.argmin(sales_data[:, 2])]
print(f"Π“ΠΎΠ΄ с минимальной Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠΎΠΉ ΠΎΡ‚ ΠΏΡ€ΠΎΠ΄Π°ΠΆ: {min_revenue_year}")

ПодвСдСм ΠΈΡ‚ΠΎΠ³ΠΈ

NumPy – мощная ΠΈ эффСктивная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰Π°Ρ двумя Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ прСимущСствами:

  • ΠžΠ±ΡˆΠΈΡ€Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ – ΠΎΡ‚ производствСнных ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ курсов Π²Π°Π»ΡŽΡ‚ Π΄ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ.
  • Высокой ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (благодаря Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° C/C++).

Π­Ρ‚ΠΈ прСимущСства Π΄Π΅Π»Π°ΡŽΡ‚ NumPy Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΌ инструмСнтом для Π½Π°ΡƒΡ‡Π½Ρ‹Ρ…, ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹Ρ… ΠΈ финансовых вычислСний, машинного обучСния, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ….

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π³Π»Π°Π²Π΅ самоучитСля Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Pandas.

***

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ самоучитСля

  1. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ, сфСры примСнСния, установка, ΠΎΠ½Π»Π°ΠΉΠ½ IDE
  2. ВсС, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для изучСния Python с нуля – ΠΊΠ½ΠΈΠ³ΠΈ, сайты, ΠΊΠ°Π½Π°Π»Ρ‹ ΠΈ курсы
  3. Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…: ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ
  4. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками
  5. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со списками ΠΈ списковыми Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ
  6. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со словарями ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ словарСй
  7. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°ΠΌΠΈ
  8. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со мноТСствами
  9. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ†ΠΈΠΊΠ»Π° for
  10. Условный Ρ†ΠΈΠΊΠ» while
  11. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ
  12. АнонимныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
  13. РСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
  14. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка, замыкания ΠΈ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ‹
  15. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой
  16. РСгулярныС выраТСния
  17. ΠžΡΠ½ΠΎΠ²Ρ‹ скрапинга ΠΈ парсинга
  18. ΠžΡΠ½ΠΎΠ²Ρ‹ ООП: инкапсуляция ΠΈ наслСдованиС
  19. ΠžΡΠ½ΠΎΠ²Ρ‹ ООП: абстракция ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ
  20. ГрафичСский интСрфСйс Π½Π° Tkinter
  21. ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ³Ρ€ Π½Π° Pygame
  22. ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с SQLite
  23. ΠžΡΠ½ΠΎΠ²Ρ‹ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° Flask
  24. ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с NumPy
  25. ΠžΡΠ½ΠΎΠ²Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ… с Pandas

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•

admin
11 дСкабря 2018

ООП Π½Π° Python: ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python допускаСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π½ΠΎ Π² Π΅Π³ΠΎ основС...
admin
28 июня 2018

3 самых Π²Π°ΠΆΠ½Ρ‹Ρ… сфСры примСнСния Python: возмоТности языка

БущСствуСт мноТСство областСй примСнСния Python, Π½ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ особСнно...
admin
13 фСвраля 2017

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python: ΠΎΡ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ° Π΄ΠΎ профСссионала

Пошаговая инструкция для всСх, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒΒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python...