Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Копіювання Масивів | Поширені Функції NumPy
Ultimate NumPy

bookКопіювання Масивів

Часто виникає потреба створити копію масиву, щоб вносити зміни без впливу на оригінальний масив.

Просте присвоєння

Спочатку розглянемо, чому не можна просто створити іншу змінну за допомогою array_2 = array_1, де array_1 — це наш оригінальний масив.

123456
import numpy as np array_1 = np.array([1, 2, 3]) array_2 = array_1 # Setting the first element of array_2 to 10 array_2[0] = 10 print(array_1)
copy

Ми змінили значення першого елемента array_2 на 10, але це призначення також змінило значення першого елемента array_1 на 10.

Note
Примітка

За допомогою array_2 = array_1 ви не створюєте новий масив; натомість ви створюєте посилання на той самий масив у пам'яті. У результаті будь-які зміни, внесені до array_2, також впливатимуть на array_1.

Щоб вирішити цю проблему, можна написати array_2 = np.array([1, 2, 3]), але це означає написати той самий код двічі. Пам'ятайте головний принцип у програмуванні: Не повторюйтеся.

Метод ndarray.copy()

На щастя, NumPy має метод ndarray.copy() як рішення цієї проблеми.

12345678
import numpy as np array_1 = np.array([1, 2, 3]) # Copying the contents of array_1 array_2 = array_1.copy() # Setting the first element of array_2 to 10 array_2[0] = 10 print(f'Initial array: {array_1}') print(f'Modified copy: {array_2}')
copy

Тепер ми створили новий масив для array_2 з тими ж елементами, що й у array_1.

Для двовимірних масивів процедура копіювання є абсолютно такою ж.

Функція numpy.copy()

Замість методу .copy() можна також використовувати функцію copy(), яка приймає масив як параметр: array_2 = np.copy(array_1).

Функція та метод працюють однаково; однак існує одна особливість. Обидва мають параметр order, який визначає структуру розміщення в пам'яті масиву, але їхні значення за замовчуванням різні.

На зображенні нижче показано структуру масиву sales_data_2021, який використовується у завданні:

Завдання

Swipe to start coding

Ви аналізуєте квартальні дані продажів компанії за 2021 рік. Дані зберігаються у NumPy-масиві з назвою sales_data_2021, де кожен рядок відповідає певному продукту, а кожен стовпець — квартальним продажам цього продукту.

  1. Створіть копію sales_data_2021, використовуючи відповідний метод масиву NumPy, і збережіть її у sales_data_2022.
  2. Оновіть останні два елементи першого рядка (що представляє квартальні продажі продукту) у sales_data_2022 на 390 та 370:
    • Використайте додатний індекс для вказання рядка;
    • Використайте зріз лише з від’ємним значенням start для індексації останніх двох елементів.

Рішення

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

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

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

Секція 3. Розділ 3
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

close

Awesome!

Completion rate improved to 3.7

bookКопіювання Масивів

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

Часто виникає потреба створити копію масиву, щоб вносити зміни без впливу на оригінальний масив.

Просте присвоєння

Спочатку розглянемо, чому не можна просто створити іншу змінну за допомогою array_2 = array_1, де array_1 — це наш оригінальний масив.

123456
import numpy as np array_1 = np.array([1, 2, 3]) array_2 = array_1 # Setting the first element of array_2 to 10 array_2[0] = 10 print(array_1)
copy

Ми змінили значення першого елемента array_2 на 10, але це призначення також змінило значення першого елемента array_1 на 10.

Note
Примітка

За допомогою array_2 = array_1 ви не створюєте новий масив; натомість ви створюєте посилання на той самий масив у пам'яті. У результаті будь-які зміни, внесені до array_2, також впливатимуть на array_1.

Щоб вирішити цю проблему, можна написати array_2 = np.array([1, 2, 3]), але це означає написати той самий код двічі. Пам'ятайте головний принцип у програмуванні: Не повторюйтеся.

Метод ndarray.copy()

На щастя, NumPy має метод ndarray.copy() як рішення цієї проблеми.

12345678
import numpy as np array_1 = np.array([1, 2, 3]) # Copying the contents of array_1 array_2 = array_1.copy() # Setting the first element of array_2 to 10 array_2[0] = 10 print(f'Initial array: {array_1}') print(f'Modified copy: {array_2}')
copy

Тепер ми створили новий масив для array_2 з тими ж елементами, що й у array_1.

Для двовимірних масивів процедура копіювання є абсолютно такою ж.

Функція numpy.copy()

Замість методу .copy() можна також використовувати функцію copy(), яка приймає масив як параметр: array_2 = np.copy(array_1).

Функція та метод працюють однаково; однак існує одна особливість. Обидва мають параметр order, який визначає структуру розміщення в пам'яті масиву, але їхні значення за замовчуванням різні.

На зображенні нижче показано структуру масиву sales_data_2021, який використовується у завданні:

Завдання

Swipe to start coding

Ви аналізуєте квартальні дані продажів компанії за 2021 рік. Дані зберігаються у NumPy-масиві з назвою sales_data_2021, де кожен рядок відповідає певному продукту, а кожен стовпець — квартальним продажам цього продукту.

  1. Створіть копію sales_data_2021, використовуючи відповідний метод масиву NumPy, і збережіть її у sales_data_2022.
  2. Оновіть останні два елементи першого рядка (що представляє квартальні продажі продукту) у sales_data_2022 на 390 та 370:
    • Використайте додатний індекс для вказання рядка;
    • Використайте зріз лише з від’ємним значенням start для індексації останніх двох елементів.

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

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

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

Секція 3. Розділ 3
single

single

some-alt