Атрибут coords
Атрибут coords класса flatiter возвращает кортеж, содержащий координаты текущего элемента в многомерном массиве. Этот атрибут полезен, когда необходимо знать положение элемента при обходе массива с помощью плоского итератора. Координаты соответствуют индексам по каждому измерению исходного массива.
Синтаксис
flat_iter.coords
Пример
Получим координаты текущего элемента при обходе двумерного массива:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
flat_iter = arr.flat
for i in range(6):
print(f"Index {i}: value = {flat_iter[i]}, coords = {flat_iter.coords}")
Результат выполнения кода:
"Index 0: value = 1, coords = (0, 0)"
"Index 1: value = 2, coords = (0, 1)"
"Index 2: value = 3, coords = (0, 2)"
"Index 3: value = 4, coords = (1, 0)"
"Index 4: value = 5, coords = (1, 1)"
"Index 5: value = 6, coords = (1, 2)"
Пример
Используем атрибут coords в цикле для изменения элементов по их координатам:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
flat_iter = arr.flat
for i in range(arr.size):
coords = flat_iter.coords
if coords[0] == 1: # Вторая строка
flat_iter[i] = 0
print(arr)
Результат выполнения кода:
[[1 2 3]
[0 0 0]]
Пример
Работа с трёхмерным массивом:
import numpy as np
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
flat_iter = arr.flat
print(f"Shape of array: {arr.shape}")
print(f"Coords of first element: {flat_iter.coords}")
flat_iter[5] = 99
print(f"Coords of element with index 5: {flat_iter.coords}")
print(f"Modified array:\n{arr}")
Результат выполнения кода:
"Shape of array: (2, 2, 2)"
"Coords of first element: (0, 0, 0)"
"Coords of element with index 5: (1, 0, 1)"
"Modified array:"
"[[[ 1 2]"
" [ 3 4]]"
" [[ 5 99]"
" [ 7 8]]]"