Функция choose
Функция choose создает новый массив,
выбирая элементы из последовательности массивов
согласно значениям индексов в исходном массиве.
Первым параметром функция принимает массив индексов.
Вторым параметром передается последовательность
массивов, из которых будут выбираться элементы.
Третьим параметром можно указать режим работы
с параметром mode.
Синтаксис
np.choose(a, choices, [mode])
Пример
Выберем элементы из двух массивов на основе индексов:
import numpy as np
a = np.array([0, 1, 0, 1])
choices = [np.array([10, 20, 30, 40]),
np.array([50, 60, 70, 80])]
res = np.choose(a, choices)
print(res)
Результат выполнения кода:
[10 60 30 80]
Пример
Используем двумерный массив индексов для выбора элементов:
import numpy as np
a = np.array([[0, 1],
[1, 0]])
choices = [np.array([[10, 20],
[30, 40]]),
np.array([[50, 60],
[70, 80]])]
res = np.choose(a, choices)
print(res)
Результат выполнения кода:
[[10 60]
[70 40]]
Пример
Используем режим для обработки индексов вне диапазона:
import numpy as np
a = np.array([0, 2, 1, 3])
choices = [np.array([1, 2, 3, 4]),
np.array([5, 6, 7, 8]),
np.array([9, 10, 11, 12])]
res = np.choose(a, choices, mode='clip')
print(res)
Результат выполнения кода:
[1 12 7 12]
Пример
Выберем элементы для создания условного массива:
import numpy as np
a = np.array([0, 0, 1, 1, 0])
choices = [np.array([-1, -1, -1, -1, -1]),
np.array([1, 1, 1, 1, 1])]
res = np.choose(a, choices)
print(res)
Результат выполнения кода:
[-1 -1 1 1 -1]
Пример
Используем трехмерный массив для сложного выбора:
import numpy as np
a = np.array([[[0, 1],
[1, 0]],
[[0, 1],
[1, 0]]])
choices = [np.array([10, 20, 30, 40, 50, 60, 70, 80]).reshape(2, 2, 2),
np.array([90, 100, 110, 120, 130, 140, 150, 160]).reshape(2, 2, 2)]
res = np.choose(a, choices)
print(res)
Результат выполнения кода:
[[[ 10 100]
[110 40]]
[[ 50 140]
[150 80]]]