Понимание использования any () и all () в массивах numpy - PullRequest
0 голосов
/ 11 июня 2018

В чем разница между:

a = np.array([2,3,4])
b = np.array([2,7,8])

if a.any() == b.all():
   print('yes')

и

a = np.array([2,3,4])
b = np.array([2,7,8])

if a.any() == b.any():
   print('yes')

В обеих ситуациях печатается 'yes'.

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

На 1D-массиве целых чисел, подобных вашему, any даст вам True тогда и только тогда, когда некоторый элемент не равен нулю, тогда как all даст вам True, если итолько если все элементы отличны от нуля.

Таким образом, ваш первый фрагмент кода преобразуется в:
"Выведите да, если ответ на вопрос" Есть ли какой-нибудь ненулевой элементв a? 'совпадает с ответом на вопрос «Все ли элементы b отличны от нуля?».

и второе в:
"Выведите да, если ответ на вопрос" Есть ли какой-нибудь ненулевой элемент в a? "совпадает с ответом на вопрос «Есть ли ненулевой элемент в b?» ».

0 голосов
/ 11 июня 2018

any() и all() предназначены для логических массивов.any() возвращает True, если в массиве есть значения, равные True.all() возвращает True, если все значения в массиве равны True.Для целых чисел / чисел функция аналогична, за исключением того, что они возвращают True, если значение 0 не найдено в массиве.В вашем примере, поскольку a.any() и a.all() вернут True, из этого следует, что a.any() == a.all().

Попробуйте выполнить следующий код, чтобы увидеть, как он работает на практике.

a = np.asarray([1,2,3])
b = np.asarray([-1,0,1])
c = np.asarray([True, False])

print(a.any())
print(a.all())

print(b.any())
print(b.all())

print(c.any())
print(c.all())
...