Разница между копией и представлением
В NumPy копия (copy) — это совершенно новый массив с собственными данными, тогда как представление (view) — это новый способ просмотра тех же данных. Изменение представления повлияет на исходный массив, а изменение копии — нет.
Давайте посмотрим на это на практике. Мы создадим массив, затем сделаем его представление и копию. После этого мы изменим оба и понаблюдаем за эффектом на исходном массиве.
Сначала откройте файл main.py в файловом менеджере слева. Затем замените его содержимое следующим кодом:
import numpy as np
## --- Часть 1: Изменение представления ---
print("--- Modifying a View ---")
## Создаем исходный массив
original_array_view = np.array([1, 2, 3, 4, 5])
print(f"Original array: {original_array_view}")
## Создаем представление массива
view_array = original_array_view.view()
## Изменяем первый элемент представления
view_array[0] = 99
print(f"View after modification: {view_array}")
print(f"Original array after modifying the view: {original_array_view}\n")
## --- Часть 2: Изменение копии ---
print("--- Modifying a Copy ---")
## Создаем другой исходный массив
original_array_copy = np.array([10, 20, 30, 40, 50])
print(f"Original array: {original_array_copy}")
## Создаем копию массива
copy_array = original_array_copy.copy()
## Изменяем первый элемент копии
copy_array[0] = 999
print(f"Copy after modification: {copy_array}")
print(f"Original array after modifying the copy: {original_array_copy}")
Теперь сохраните файл и запустите его из терминала, чтобы увидеть вывод.
python main.py
Вы должны увидеть следующий вывод. Обратите внимание, как исходный массив изменился при изменении его представления, но остался неизменным при изменении его копии.
--- Modifying a View ---
Original array: [1 2 3 4 5]
View after modification: [99 2 3 4 5]
Original array after modifying the view: [99 2 3 4 5]
--- Modifying a Copy ---
Original array: [10 20 30 40 50]
Copy after modification: [999 20 30 40 50]
Original array after modifying the copy: [10 20 30 40 50]
Это демонстрирует основное различие: представление связано с исходными данными, в то время как копия полностью независима.