Копіювання Масивів
Часто виникає потреба створити копію масиву, щоб вносити зміни, не впливаючи на оригінальний масив.
Просте присвоєння
Спочатку розглянемо, чому не можна просто створити іншу змінну за допомогою 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
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Can you explain the difference between the .copy() method and np.copy() function in more detail?
What does the 'order' parameter do when copying arrays?
Can you show how to copy a 2D array using these methods?
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