🐍 Π‘Π°ΠΌΠΎΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒ ΠΏΠΎ 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 прСдоставляСт ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для всСвозмоТных манипуляций Π½Π°Π΄ массивами – ΠΎΡ‚ сортировки ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎ измСнСния Ρ„ΠΎΡ€ΠΌΡ‹.
🐍 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° питониста
Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° питониста»
πŸπŸŽ“ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° собСса ΠΏΠΎ Python
ΠŸΠΎΠ΄Ρ‚ΡΠ½ΡƒΡ‚ΡŒ свои знания ΠΏΠΎ Python Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° собСса ΠΏΠΎ PythonΒ»
🐍🧩 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ Python
Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ Python для ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ PythonΒ»

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив Π² 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 Ρ‚Π°ΠΊ быстр, ΡƒΠΌΠ΅Π΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ массивы, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ с Π½ΠΈΠΌΠΈ матСматичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ дСсятки ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для ΠΈΡ… прСобразования. Π£ вас Π² Ρ€ΡƒΠΊΠ°Ρ… ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ инструмСнтов для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΡ€Π° ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»ΡΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΠ½ позволяСт Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ. Π’ ΠΏΠΎΠ»Π½ΠΎΠΉ вСрсии ΡƒΡ€ΠΎΠΊΠ° Π²Ρ‹:

  • ΠΠ°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ NumPy для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ: ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ†Π²Π΅Ρ‚Π° ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ простыС Ρ„ΠΎΡ‚ΠΎ-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹.
  • ΠŸΠΎΠΉΠΌΠ΅Ρ‚Π΅, ΠΊΠ°ΠΊ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ связки NumPy ΠΈ Matplotlib.
  • Π Π΅ΡˆΠΈΡ‚Π΅ 10 практичСских ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹Ρ… ΠΈ финансовых Π·Π°Π΄Π°Ρ‡: ΠΎΡ‚ расчСта ΠΊΡ€Π΅Π΄ΠΈΡ‚ΠΎΠ² ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° портфСля Π°ΠΊΡ†ΠΈΠΉ Π΄ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° производствСнных ΠΏΠ»Π°Π½ΠΎΠ².

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

admin
11 дСкабря 2018

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

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

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

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

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

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