Копирование массива NumPy и просмотр
Разница между копированием и просмотром
Основное различие между копией и представлением массива заключается в том, что копия — это новый массив, а представление — просто представление исходного массива.
Копия владеет данными, и любые изменения, внесенные в копию, не повлияют на исходный массив, а любые изменения, внесенные в исходный массив, не повлияют на копию.
Представление не владеет данными, и любые изменения, внесенные в представление, повлияют на исходный массив, а любые изменения, внесенные в исходный массив, повлияют на представление.
КОПИРОВАТЬ:
Пример
Сделайте копию, измените исходный массив и отобразите оба массива:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
arr[0] = 42
print(arr)
print(x)
На копию НЕ ДОЛЖНЫ влиять изменения, внесенные в исходный массив.
ПОСМОТРЕТЬ:
Пример
Создайте представление, измените исходный массив и отобразите оба массива:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
arr[0] = 42
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
, который возвращается, None
если массив владеет данными.
В противном случае 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
.
Представление возвращает исходный массив.