Метод copy
Метод copy класса flatiter создает
независимую копию плоского итератора массива.
Этот метод не принимает параметров и возвращает
новый объект flatiter, который указывает
на те же данные, но имеет собственное состояние
позиции итерации.
Синтаксис
iterator.copy()
Пример
Создадим плоский итератор для двумерного массива и скопируем его:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
it1 = arr.flat
it2 = it1.copy()
print(type(it1))
print(type(it2))
Результат выполнения кода:
<class 'numpy.flatiter'>
<class 'numpy.flatiter'>
Как видно из примера, оба итератора имеют один и
тот же тип flatiter.
Пример
Покажем, что копия итератора независима от оригинала и имеет свою собственную позицию:
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
it1 = arr.flat
it2 = it1.copy()
print('Original index:', it1.index)
print('Copy index:', it2.index)
next(it1)
next(it1)
print('\nAfter two steps:')
print('Original index:', it1.index)
print('Copy index:', it2.index)
Результат выполнения кода:
Original index: 0
Copy index: 0
After two steps:
Original index: 2
Copy index: 0
Этот пример демонстрирует, что продвижение оригинального итератора не влияет на копию.
Пример
Используем копию итератора для сохранения позиции, чтобы позже продолжить итерацию с того же места:
import numpy as np
arr = np.array(['a', 'b', 'c', 'd', 'e'])
it = arr.flat
# Сохраняем копию текущего состояния
saved_it = it.copy()
# Проходим первые два элемента
print('First pass:')
print(next(it))
print(next(it))
# Восстанавливаем итератор из копии
it = saved_it.copy()
print('\nSecond pass from saved position:')
print(next(it))
print(next(it))
print(next(it))
Результат выполнения кода:
First pass:
a
b
Second pass from saved position:
a
b
c
В этом примере мы сохранили состояние итератора
перед началом итерации, а затем восстановили его
с помощью метода copy, чтобы пройти элементы
заново.
Смотрите также
-
класс
flatiter,
который представляет собой плоский итератор для многомерных массивов -
атрибут
base,
который возвращает исходный массив, связанный с итератором -
атрибут
coords,
который возвращает текущие координаты итератора в многомерном массиве -
атрибут
index,
который возвращает текущий плоский индекс итератора