Выберите элемент из двух массивов с логическим массивом - PullRequest
0 голосов
/ 03 июня 2019

Предположим, у меня есть два пустых массива a и b формы (n,) и логический массив c, также формы (n,).

Я хочу вычислить массив фигур (n,) x, где x [i] = a [i], если c [i], иначе b [i].

* 1005 Е.Г. *

a = np.array([3, 4, 5])
b = np.array([-1, -5, -9])
c = np.array([True, False, True])

x = np.array([3, -5, 5]).

Кто-нибудь знает, как это сделать с помощью обалденных операций?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 03 июня 2019

Вы можете использовать метод zip для работы с тремя списками одновременно в вашем понимании списка:

[aa if cc else bb for aa, bb, cc in zip(a, b, c)]
2 голосов
/ 03 июня 2019

Использование numpy.where

>>> import numpy as np
>>> a = np.array([3, 4, 5])
>>> b = np.array([-1, -5, -9])
>>> c = np.array([True, False, True])
>>>
>>> np.where(c, a, b)
array([ 3, -5,  5])

Использование поэлементного умножения

>>> x = np.array([3, 4, 5])
>>> y = np.array([-1, -5, -9])
>>> c = np.array([True, False, True])

>>> x * c + y * (1 - c)
array([ 3, -5,  5])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...