Копия NumPy массива vs Визуализация

Различие между копией и видом

Основное различие между копией и массивом-видом заключается в том, что копия - это новый массив, а это вид - только вид на исходный массив.

Копия содержит данные, любые изменения, внесенные в копию, не влияют на исходный массив, и любые изменения в исходном массиве не влияют на копию.

Вид не имеет данных, любые изменения, внесенные в вид, будут влиять на оригинальный массив, и любые изменения, внесенные в оригинальный массив, будут влиять на вид.

Дубликат:

Пример

Сделайте копию, измените оригинальный массив и покажите два массива:

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
arr[0] = 61
print(arr) 
print(x)

Запуск примера

Этот дубликат не должен受到影响 от изменений, внесенных в оригинальный массив.

Вид:

Пример

Создайте вид, измените оригинальный массив и покажите два массива:

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
arr[0] = 61
print(arr) 
print(x)

Запуск примера

Вид должен受到影响 от изменений, внесенных в оригинальный массив.

Изменения в виде:

Пример

Создайте вид, измените вид и покажите два массива:

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
x[0] = 31
print(arr) 
print(x)

Запуск примера

Оригинальный массив должен受到影响 от изменений, внесенных в вид.

Проверка наличия данных в массиве

Как было сказано выше, копия имеет данные, а вид не имеет данных, но как мы можем это проверить?

У каждого NumPy массива есть свойство baseЕсли массив имеет данные, то этот атрибут base возвращает None.

В противном случае,base Свойства будут ссылаться на исходный объект.

Пример

Печатайте значение свойства base, чтобы проверить, имеет ли массив свои данные:

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
y = arr.view()
print(x.base)
print(y.base)

Запуск примера

Копия возвращает None.

Вид возвращает исходный массив.