Столбец мудрой логической операции в numpy - PullRequest
1 голос
/ 25 февраля 2020

Как правильно выполнить логическую операцию между столбцами массива numpy?

На данный момент я обнаружил:

import numpy as np

x = np.random.randint(3, 10, (5, 4))
col_or = np.sum(x > 8, axis=1) != 0
col_and = np.prod(x > 8, axis=1) != 0

Меня беспокоит, что мне нужно преобразовать логические значения для чисел c значений и логические операции для обычных арифметических c операций. Кроме того, мне также нужно проверить неравенство (!= 0)

Есть ли более подходящий способ сделать это?

1 Ответ

2 голосов
/ 25 февраля 2020

Вероятно, вы должны использовать np.all и np.any для своих операций. Они не только более эффективны с точки зрения проведения проверки, но и имеют короткое замыкание.

Я понимаю, что это всего лишь пример, но я бы также не стал повторно вычислять маску несколько раз:

mask = x > 8
col_or = np.any(mask, axis=1)
col_and = np.all(mask, axis=1)

Вы также можете использовать методы all и any самого массива:

col_or = mask.any(axis=1)
col_and = mask.all(axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...