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

Метод choose

Метод choose класса ndarray создает новый массив, выбирая элементы из переданного списка массивов-кандидатов в соответствии с индексами, хранящимися в исходном массиве. Фактически, исходный массив используется как карта индексов: каждый его элемент определяет, из какого массива-кандидата будет взят элемент для результирующего массива.

Синтаксис

arr.choose(choices, [out, mode])

Параметры:

  • choices - список массивов, из которых происходит выборка. Все массивы должны быть либо одномерными, либо иметь форму, транслируемую к форме исходного массива.
  • out (необязательный) - массив для записи результата. Если указан, должен иметь форму, совместимую с исходным массивом, и тип данных, способный принять результат.
  • mode (необязательный) - определяет поведение при выходе индекса за пределы допустимого диапазона. Может принимать значения 'raise' (по умолчанию, выбрасывает исключение), 'wrap' (заворачивает индекс по модулю длины списка choices) или 'clip' (ограничивает индекс максимальным значением).

Пример

Давайте создадим массив индексов и два массива-кандидата, из которых метод будет выбирать элементы:

import numpy as np indices = np.array([0, 1, 0, 1]) a = np.array([10, 20, 30, 40]) b = np.array([100, 200, 300, 400]) res = indices.choose([a, b]) print(res)

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

[ 10 200 30 400]

Для каждого индекса из массива indices берется соответствующее значение: для 0 - из a, для 1 - из b.

Пример

Исходный массив может быть многомерным. В этом случае выборка происходит поэлементно:

import numpy as np indices = np.array([[0, 1], [1, 0]]) a = np.array([100, 200]) b = np.array([1000, 2000]) res = indices.choose([a, b]) print(res)

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

[[ 100 2000] [2000 200]]

Пример

Если массив-кандидат многомерный, его форма должна быть транслируема к форме исходного массива. В этом случае выборка работает аналогично:

import numpy as np indices = np.array([[0, 1], [1, 0]]) a = np.array([[10, 20], [30, 40]]) b = np.array([[100, 200], [300, 400]]) res = indices.choose([a, b]) print(res)

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

[[ 10 200] [300 40]]

Пример

Рассмотрим использование параметра mode. При значении 'wrap' индекс оборачивается по модулю длины списка choices:

import numpy as np indices = np.array([0, 1, 2, 3]) choices = [np.array([10, 20, 30, 40]), np.array([100, 200, 300, 400])] res = indices.choose(choices, mode='wrap') print(res)

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

[ 10 200 30 400]

Индекс 2 был преобразован в 0, так как 2 % 2 = 0, а индекс 3 - в 1.

При значении 'clip' все индексы, превышающие максимальный допустимый, заменяются на максимальный индекс:

import numpy as np indices = np.array([0, 1, 2, 3]) choices = [np.array([10, 20, 30, 40]), np.array([100, 200, 300, 400])] res = indices.choose(choices, mode='clip') print(res)

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

[ 10 200 300 400]

Индексы 2 и 3 были заменены на максимально допустимый индекс 1.

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

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