Атрибут base
Атрибут base у экземпляров класса ndarray
позволяет получить ссылку на массив,
чьи данные использует текущий массив.
Если массив создан как срез, через view или другие операции,
не вызывающие копирования данных, то base хранит
ссылку на оригинальный массив.
Когда массив создаётся самостоятельно (например, через array
или zeros), этот атрибут имеет значение None.
Синтаксис
arr.base
Пример
Для обычного массива, созданного напрямую, атрибут base
возвращает None:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr.base)
Результат выполнения кода:
None
Пример
Для массива, полученного как срез другого массива,
атрибут base ссылается на исходный массив:
import numpy as np
original = np.array([1, 2, 3, 4, 5])
slice_arr = original[1:4]
print(slice_arr.base)
Результат выполнения кода:
[1 2 3 4 5]
Пример
Для представления, созданного методом view,
атрибут base также возвращает исходный массив:
import numpy as np
original = np.array([[1, 2, 3], [4, 5, 6]])
view_arr = original.view()
print(view_arr.base)
Результат выполнения кода:
[[1 2 3]
[4 5 6]]
Пример
Атрибут base полезен для проверки того,
является ли массив представлением другого массива,
или он содержит собственные данные:
import numpy as np
arr_own = np.array([1, 2, 3])
arr_view = arr_own[0:2]
if arr_view.base is not None:
print("arr_view является представлением")
else:
print("arr_view имеет собственные данные")
if arr_own.base is None:
print("arr_own имеет собственные данные")
Результат выполнения кода:
"arr_view является представлением"
"arr_own имеет собственные данные"