single
Копіювання масивів
Свайпніть щоб показати меню
Часто виникає потреба створити копію масиву, щоб вносити зміни, не впливаючи на оригінальний масив.
Просте присвоєння
Спочатку розглянемо, чому не можна просто створити іншу змінну за допомогою array_2 = array_1, де array_1 — це наш оригінальний масив.
123456import 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)
Ми змінили значення першого елемента array_2 на 10, але це призначення також змінило значення першого елемента array_1 на 10.
За допомогою array_2 = array_1 ви не створюєте новий масив; натомість ви створюєте посилання на той самий масив у пам'яті. У результаті будь-які зміни, внесені до array_2, також вплинуть на array_1.
Щоб вирішити цю проблему, можна написати array_2 = np.array([1, 2, 3]), але це означає написати той самий код двічі. Пам'ятайте головний принцип програмування: Не повторюйтеся.
Метод ndarray.copy()
На щастя, NumPy має метод ndarray.copy(), який вирішує цю проблему.
12345678import 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}')
Тепер створено новий масив для array_2 з тими ж елементами, що й у array_1.
Для 2D масивів процедура копіювання абсолютно така ж.
Функція numpy.copy()
Замість методу .copy() можна також використовувати функцію copy(), яка приймає масив як параметр: array_2 = np.copy(array_1).
Функція та метод працюють однаково; однак є одна особливість. Обидва мають параметр order, який визначає структуру розміщення в пам'яті масиву, але їхні значення за замовчуванням різні.
На зображенні нижче показано структуру масиву sales_data_2021, який використовується у завданні:
Проведіть, щоб почати кодувати
Ви аналізуєте квартальні дані продажів компанії за 2021 рік. Дані зберігаються у масиві NumPy з назвою sales_data_2021, де кожен рядок представляє окремий продукт, а кожен стовпець — квартальні продажі цього продукту.
- Створіть копію
sales_data_2021, використовуючи відповідний метод масиву NumPy, і збережіть її уsales_data_2022. - Оновіть останні два елементи першого рядка (що представляє квартальні продажі продукту) у
sales_data_2022на390та370:- Використайте додатний індекс для вказання рядка;
- Використайте зріз лише з від’ємним значенням
startдля індексації останніх двох елементів.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат