Копіювання Масивів
Часто виникає потреба створити копію масиву, щоб вносити зміни без впливу на оригінальний масив.
Просте присвоєння
Спочатку розглянемо, чому не можна просто створити іншу змінну за допомогою 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
.
Для двовимірних масивів процедура копіювання є абсолютно такою ж.
Функція numpy.copy()
Замість методу .copy()
можна також використовувати функцію copy()
, яка приймає масив як параметр: array_2 = np.copy(array_1)
.
Функція та метод працюють однаково; однак існує одна особливість. Обидва мають параметр order
, який визначає структуру розміщення в пам'яті масиву, але їхні значення за замовчуванням різні.
На зображенні нижче показано структуру масиву sales_data_2021
, який використовується у завданні:
Swipe to start coding
Ви аналізуєте квартальні дані продажів компанії за 2021 рік. Дані зберігаються у NumPy-масиві з назвою sales_data_2021
, де кожен рядок відповідає певному продукту, а кожен стовпець — квартальним продажам цього продукту.
- Створіть копію
sales_data_2021
, використовуючи відповідний метод масиву NumPy, і збережіть її уsales_data_2022
. - Оновіть останні два елементи першого рядка (що представляє квартальні продажі продукту) у
sales_data_2022
на390
та370
:- Використайте додатний індекс для вказання рядка;
- Використайте зріз лише з від’ємним значенням
start
для індексації останніх двох елементів.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 3.7
Копіювання Масивів
Свайпніть щоб показати меню
Часто виникає потреба створити копію масиву, щоб вносити зміни без впливу на оригінальний масив.
Просте присвоєння
Спочатку розглянемо, чому не можна просто створити іншу змінну за допомогою 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
.
Для двовимірних масивів процедура копіювання є абсолютно такою ж.
Функція numpy.copy()
Замість методу .copy()
можна також використовувати функцію copy()
, яка приймає масив як параметр: array_2 = np.copy(array_1)
.
Функція та метод працюють однаково; однак існує одна особливість. Обидва мають параметр order
, який визначає структуру розміщення в пам'яті масиву, але їхні значення за замовчуванням різні.
На зображенні нижче показано структуру масиву sales_data_2021
, який використовується у завданні:
Swipe to start coding
Ви аналізуєте квартальні дані продажів компанії за 2021 рік. Дані зберігаються у NumPy-масиві з назвою sales_data_2021
, де кожен рядок відповідає певному продукту, а кожен стовпець — квартальним продажам цього продукту.
- Створіть копію
sales_data_2021
, використовуючи відповідний метод масиву NumPy, і збережіть її уsales_data_2022
. - Оновіть останні два елементи першого рядка (що представляє квартальні продажі продукту) у
sales_data_2022
на390
та370
:- Використайте додатний індекс для вказання рядка;
- Використайте зріз лише з від’ємним значенням
start
для індексації останніх двох елементів.
Рішення
Дякуємо за ваш відгук!
single