Вы можете использовать numpy.choose
для этого:
>>> a
array([[ -3, 2, 5, 0, -2, 12, 5, -1, -12, 5],
[ -8, -12, 15, 6, 2, -3, 4, -17, 0, 7]])
>>> b
array([1, 0, 0, 1, 1, 1, 1, 1, 0, 1])
>>> np.choose(b, a)
array([ -8, 2, 5, 6, 2, -3, 4, -17, -12, 7])
Здесь первый параметр b
- это массив, который содержит значения вариантов, а следующий параметр - это 2d-массив значений для выбора.
Как видите, для индексов i
, где b[i] == 0
, затем соответствующее значение первой строки a[0][i]
, а для b[i] == 1
мы получаем a[1][i]
. Это может быть легко обобщено для большего количества значений.
или мы можем использовать numpy.where
и передавать подмассивы:
>>> np.where(b, a[1], a[0])
array([ -8, 2, 5, 6, 2, -3, 4, -17, -12, 7])