Возвращает, какие элементы в двух массивах numpy оба равны значению X?

#python #numpy

#python #numpy

Вопрос:

Например, A = [5, 0, 0, 5] B = [5, 5, 0, 5]

Я хочу получить, какие элементы равны 5 в обоих массивах

Вывод должен быть = [0, 3]

Комментарии:

1. Каков результат [0,3] ? Можете ли вы объяснить?

Ответ №1:

 np.where(np.logical_and(A == 5, B == 5))
  

Ответ №2:

В одномерных массивах np.flatnonzero работает отлично:

 import numpy as np
A = np.array([5, 0, 0, 5])
B = np.array([5, 5, 0, 5])
np.flatnonzero((A == 5) amp; (B == 5))
  

np.where или np.nonzero , однако, возвращает кортеж, и вам нужно взять его первый элемент:

np.where((A == 5) amp; (B == 5))[0] или

np.nonzero((A == 5) amp; (B == 5))[0]

Вывод

 array([0, 3], dtype=int64)
  

Примечание: сначала убедитесь, что вы преобразовали A и B в массивы.