Numpy сравнить массив с несколькими скалярами одновременно - PullRequest
0 голосов
/ 10 мая 2018

Предположим, у меня есть массив

a = np.array([1,2,3])

и я хочу сравнить его с каким-нибудь скаляром; это прекрасно работает как

a == 2 # [False, True, False]

Есть ли способ сделать такое сравнение, но с несколькими скалярами одновременно? Поведение по умолчанию при сравнении двух массивов - это поэлементное сравнение, но вместо этого я хочу, чтобы каждый элемент одного массива сравнивался поэлементно со всем другим массивом, например:

scalars = np.array([1, 2])
some_function(a, scalars)
[[True, False, False],
 [False, True, False]]

Очевидно, что я могу сделать это, например, с помощью цикла for и затем суммировать, но есть ли какой-нибудь векторизованный способ достижения того же результата?

1 Ответ

0 голосов
/ 10 мая 2018

Наружный продукт, кроме его равенства вместо продукта :

numpy.equal.outer(scalars, a)

или настройте размеры и выполните трансляцию сравнение:

scalars[:, None] == a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...