numpy.flatiter

numpy.flatiter

Класс flatiter создает объект итератора, который возвращает элементы из сжатого до одной оси представления исходного массива.

Для массива любой формы указанный итератор вызывается, как x.flat и обрабатывается как плоское представление, это позволяет выполнять перебор элементов так, как если бы это был одномерный массив. При этом итерации выполняются только в строковом C-стиле.

Данный итератор может быть проиндексирован с помощью срезов и индексных выражений.

Смотрите так же:
flat, flatten ndenumerate, ndindex


Примеры

Данный итератор вызывается как 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])