Атрибут base
Атрибут base класса flatiter возвращает исходный массив NumPy,
на основе которого был создан плоский итератор. Этот атрибут доступен
только для чтения и полезен, когда необходимо получить доступ к родительскому
массиву через объект итератора.
Синтаксис
flat_iter.base
Атрибут не принимает параметров и возвращает ссылку на исходный массив,
являющийся объектом типа ndarray.
Пример
Создадим двумерный массив, получим его плоский итератор и через атрибут
base обратимся к исходному массиву:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
flat_iter = arr.flat
print("Исходный массив:")
print(flat_iter.base)
print("Тип исходного массива:", type(flat_iter.base))
Результат выполнения кода:
Исходный массив:
[[1 2 3]
[4 5 6]]
Тип исходного массива: <class 'numpy.ndarray'>
Пример
Покажем, что атрибут base возвращает именно исходный массив,
а не его копию, поэтому изменения в исходном массиве будут видны
через этот атрибут:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
flat_iter = arr.flat
print("Исходный массив через base до изменения:")
print(flat_iter.base)
# Изменяем исходный массив
arr[0] = 99
print("Исходный массив через base после изменения:")
print(flat_iter.base)
Результат выполнения кода:
Исходный массив через base до изменения:
[1 2 3 4 5]
Исходный массив через base после изменения:
[99 2 3 4 5]
Пример
Атрибут base также работает для одномерных массивов,
возвращая ссылку на тот же самый массив:
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
flat_iter = arr.flat
print("Является ли base тем же объектом, что и arr:")
print(flat_iter.base is arr)
print("Значения из base:")
print(flat_iter.base)
Результат выполнения кода:
Является ли base тем же объектом, что и arr:
True
Значения из base:
[10 20 30 40 50]