Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Трансляція | Математика з NumPy
Основи NumPy

Трансляція

Свайпніть щоб показати меню

Перш ніж переходити до математичних операцій у NumPy, важливо зрозуміти ключове поняття — бродкастинг.

Note
Визначення

Бродкастинг — це спосіб узгодження форм масивів для виконання арифметичних операцій без ручної зміни їхньої форми. По суті, бродкастинг автоматично підлаштовує форми масивів.

Коли NumPy працює з двома масивами, він перевіряє їхні форми на сумісність, щоб визначити, чи можна їх бродкастити разом.

Note
Примітка

Якщо два масиви вже мають однакову форму, трансляція (broadcasting) не потрібна.

Однакова кількість вимірів

Припустимо, у вас є два масиви, для яких потрібно виконати додавання, з такими формами: (2, 3) та (1, 3). NumPy порівнює форми двох масивів починаючи з крайнього правого виміру і рухаючись ліворуч. Тобто спочатку порівнюються 3 і 3, потім 2 і 1.
Два виміри вважаються сумісними, якщо вони рівні або якщо один з них дорівнює 1:

  • Для вимірів 3 і 3 вони сумісні, оскільки вони рівні;
  • Для вимірів 2 і 1 вони сумісні, оскільки один з них дорівнює 1.

Оскільки всі виміри сумісні, форми вважаються сумісними. Тому масиви можуть бути транслювані, що призводить до стандартної операції додавання між матрицями однакової форми, яка виконується елементно.

Базова трансляція
123456789
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 2D array with 1 row array_2 = np.array([[11, 12, 13]]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
Note
Примітка

array_2 створено як двовимірний масив, що містить лише один рядок, тому його форма — (1, 3).

Але що станеться, якщо створити його як одновимірний масив із формою (3,)?

Різна кількість вимірів

Коли один масив має менше вимірів, ніж інший, відсутні виміри розглядаються як такі, що мають розмір 1. Розглянемо два масиви з формами (2, 3) та (3,). Тут 3 = 3, а відсутній лівий вимір вважається рівним 1, тому форма (3,) перетворюється на (1, 3). Оскільки форми (2, 3) та (1, 3) сумісні, ці два масиви можна транслювати.

Трансляція одномірного масиву у двовимірний
123456789
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 1D array array_2 = np.array([11, 12, 13]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)

Трансляція скалярів

Окрім математичних операцій з масивами, можна виконувати подібні операції між масивом і скаляром (числом) завдяки трансляції. У цьому випадку масив може мати будь-яку форму, оскільки скаляр фактично не має форми, і всі його виміри вважаються рівними 1. Тому форми завжди сумісні.

Трансляція скаляра до двовимірного масиву
123456
import numpy as np array = np.array([[1, 2, 3], [4, 5, 6]]) print(array.shape) # Broadcasting and element-wise addition result = array + 10 print(result)

Несумісні форми

Розгляд прикладу несумісних форм, коли арифметичну операцію виконати неможливо, оскільки трансляція неможлива:

Несумісні форми

Маєте масив розміром 2x3 та одновимірний масив довжини 2, тобто форму (2,). Відсутній вимір вважається 1, тому форми стають (2, 3) та (1, 2).

Починаючи з правого виміру: 323 \neq 2, тому одразу виникають несумісні виміри, а отже й несумісні форми. Якщо спробувати виконати код, виникне помилка:

12345678
import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) array_2 = np.array([11, 12]) print(array_2.shape) # ValueError result = array_1 + array_2 print(result)
question mark

Виберіть усі масиви з сумісними формами:

Виберіть усі правильні відповіді

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 1

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 4. Розділ 1
some-alt