Функция indices
Функция indices создает массив индексов для сетки координат указанной размерности.
Она полезна для быстрого создания координатных сеток, которые можно использовать
в вычислениях, требующих индексов элементов. Первым параметром функция принимает
кортеж с размерами каждой размерности, вторым параметром можно задать тип данных
возвращаемых индексов.
Синтаксис
np.indices(dimensions, [dtype])
Пример
Создадим индексы для одномерной сетки из 5 элементов:
import numpy as np
res = np.indices((5,))
print(res)
Результат выполнения кода:
[[0 1 2 3 4]]
Пример
Создадим индексы для двумерной сетки размером 2x3:
import numpy as np
res = np.indices((2, 3))
print(res)
Результат выполнения кода:
[[[0 0 0]
[1 1 1]]
[[0 1 2]
[0 1 2]]]
Как видно из результата, функция возвращает два массива: первый содержит индексы по первой оси, второй - по второй оси.
Пример
Укажем тип данных для возвращаемых индексов, например, int8:
import numpy as np
res = np.indices((2, 2), dtype=np.int8)
print(res)
Результат выполнения кода:
[[[0 0]
[1 1]]
[[0 1]
[0 1]]]
Пример
Используем индексы для вычисления значений функции на сетке. Рассчитаем расстояние от центра сетки:
import numpy as np
ind = np.indices((3, 3))
rows, cols = ind[0], ind[1]
center = (1, 1)
distance = np.sqrt((rows - center[0])**2 + (cols - center[1])**2)
print(distance)
Результат выполнения кода:
[[0. 1. 2. ]
[1. 0. 1. ]
[2. 1. 0. ]]
Пример
Создадим индексы для трехмерной сетки размером 2x2x2:
import numpy as np
res = np.indices((2, 2, 2))
print("Shape of result:", res.shape)
print("First dimension indices:")
print(res[0])
Результат выполнения кода:
Shape of result: (3, 2, 2, 2)
First dimension indices:
[[[0 0]
[0 0]]
[[1 1]
[1 1]]]
Смотрите также
-
функцию
unravel_index,
которая преобразует плоский индекс в кортеж индексов многомерного массива -
функцию
ravel_multi_index,
которая преобразует кортеж многомерных индексов в плоский индекс -
функцию
ix_,
которая создает сетку индексов для векторизованной индексации -
функцию
ndindex,
которая создает итератор по многомерным индексам массива