РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
85 of 541 menu

Функция ix_

Функция ix_ создает кортеж массивов индексов, которые могут быть использованы для векторной индексации многомерных массивов. Функция принимает произвольное количество одномерных массивов индексов и возвращает кортеж массивов, преобразованных для трансляции (broadcasting) при индексации.

Синтаксис

np.ix_(*args)

Пример

Выберем элементы из двумерного массива по индексам:

import numpy as np arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) rows = np.array([0, 2]) cols = np.array([1, 3]) indices = np.ix_(rows, cols) res = arr[indices] print(res)

Результат выполнения кода:

[[ 2 4] [10 12]]

Пример

Покажем структуру, создаваемую ix_:

import numpy as np rows = np.array([0, 2, 3]) cols = np.array([1, 2]) indices = np.ix_(rows, cols) print(indices)

Результат выполнения кода:

(array([[0], [2], [3]]), array([[1, 2]]))

Пример

Используем ix_ для выборки из трехмерного массива:

import numpy as np arr = np.arange(27).reshape(3, 3, 3) indices = np.ix_([0, 2], [1], [0, 2]) res = arr[indices] print(res)

Результат выполнения кода:

[[[ 3 5]] [[21 23]]]

Пример

Сравним ix_ с обычной индексацией:

import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) rows = np.array([0, 2]) cols = np.array([1, 2]) with_ix = arr[np.ix_(rows, cols)] without_ix = arr[rows][:, cols] print(with_ix) print(without_ix)

Результат выполнения кода:

[[2 3] [8 9]] [[2 3] [8 9]]

Пример

Используем ix_ для замены элементов:

import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) rows = np.array([0, 2]) cols = np.array([0, 2]) arr[np.ix_(rows, cols)] = 99 print(arr)

Результат выполнения кода:

[[99 2 99] [ 4 5 6] [99 8 99]]

Пример

Работа с несколькими измерениями:

import numpy as np arr = np.random.randint(0, 100, (4, 5, 6)) indices = np.ix_([0, 3], [1, 4], [2]) res = arr[indices] print(res.shape)

Результат выполнения кода:

(2, 2, 1)

Смотрите также

  • функцию indices,
    которая создает массив всех индексов
  • функцию unravel_index,
    которая преобразует плоский индекс в многомерный
  • функцию ravel_multi_index,
    которая преобразует многомерный индекс в плоский
  • функцию take,
    которая выбирает элементы по индексам
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить