Как мне объединить несколько логических массивов NumPy?

python #arrays #numpy

#python #массивы #numpy

Вопрос:

У меня есть двумерный (2D) массив, который содержит много одномерных (1D) массивов случайных логических значений.

 import numpy as np

def random_array_of_bools():
  return np.random.choice(a=[False, True], size=5)


boolean_arrays = np.array([
  random_array_of_bools(),
  random_array_of_bools(),
  ... so on
])
 

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

 [True, False, True, True, False]
[False, True, True, True, True]
[True, True, True, False, False]
 

Это мой желаемый результат:

 [False, False, True, False, False]
 

Как я могу добиться этого с помощью NumPy?

Ответ №1:

Используйте min с axis=0 :

 >>> boolean_array.min(axis=0)
array([False, False,  True, False, False])
>>> 
 

Ответ №2:

Используйте .all:

 import numpy as np

arr = np.array([[True, False, True, True, False],
                [False, True, True, True, True],
                [True, True, True, False, False]])


res = arr.all(0)
print(res)
 

Вывод

 [False False  True False False]
 

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

1. Спасибо! Пока я буду придерживаться использования .min(axis= 0), но я вижу, как это работает!

Ответ №3:

попробуйте использовать numpy bitwise_and =>

 out_arr = np.bitwise_and(np.bitwise_and(in_arr1, in_arr2),in_arr3)