numpy.flatiter
numpy.flatiter
Класс flatiter создает объект итератора, который возвращает элементы из сжатого до одной оси представления исходного массива.
Для массива любой формы указанный итератор вызывается, как x.flat
и обрабатывается как плоское представление, это позволяет выполнять перебор элементов так, как если бы это был одномерный массив. При этом итерации выполняются только в строковом C-стиле.
Данный итератор может быть проиндексирован с помощью срезов и индексных выражений.
Примеры
Данный итератор вызывается как ndarray.flat
:
>>> import numpy as np
>>>
>>> a = np.arange(8).reshape(2, 4)
>>> a
array([[0, 1, 2, 3],
[4, 5, 6, 7]])
>>>
>>> f_iter = a.flat
>>>
>>> type(f_iter)
<class 'numpy.flatiter'>
>>>
>>> for val in f_iter:
... print(val, end = ' ')
...
0 1 2 3 4 5 6 7
Данный итератор может быть проиндексирован:
>>> f_iter[4]
4
>>>
>>> f_iter[::3]
array([0, 3, 6])
Атрибут index
позволяет узнать индекс возвращаемого элемента в плоском представлении массива:
>>> f_iter.__next__()
1
>>> f_iter.index
2
>>> f_iter.__next__()
2
>>> f_iter.index
3
Атрибут coords
возвращает индекс элемента в его исходном массиве:
>>> f_iter.coords
(0, 3)
Атрибут base
возвращает массив на который ссылается и позволяет проверить его принадлежность к тому или инному массиву:
>>> f_iter.base
array([[0, 1, 2, 3],
[4, 5, 6, 7]])
>>>
>>> f_iter.base is a
True
>>>
>>> f_iter.base is b
False
Метод copy()
возвращает возвращает копию итератора в виде одномерного массива:
>>> f_iter.copy()
array([0, 1, 2, 3, 4, 5, 6, 7])