Numpy массив множественное условие логическое - PullRequest
0 голосов
/ 27 мая 2018

Я хочу, чтобы мой массив проходил два условия.Если я попытаюсь сделать это только с одним, у меня не возникнет никаких проблем, но если я дам коду два условия, происходит сбой Python.Вот мой код:

import numpy as np
from collections import deque

queue = deque([], maxlen=10)

queue.appendleft(31)
queue.appendleft(32)
queue.appendleft(33)

cond1 = 35
cond2 = 30

A_1 = np.array(queue)

print(cond2 > A_1 < cond1)
# print(A_1 > 30)  # works
# array([ True,  True,  True], dtype=bool)

print(((cond2 > A_1 < cond1).sum() == A_1.size).astype(np.int))
# print(((A_1 > 30).sum() == A_1.size).astype(np.int))  # works
# 1

Ответы [ 2 ]

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

Вот случайный пример:

import numpy as np

np.random.seed(123456)

array = np.array(np.random.randn(12))

print((array < 1) & (array > 0))

И просто, вы должны поставить условия в скобки, а затем использовать оператор & для условия и.Для или условия вы используете |оператор, а затем следовать в том же формате.Это даст вам массив логических значений.

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

Это должно быть что-то вроде np.logical_and(A_1 < cond1, A_1 > cond2)

Если вы хотите проверить, удовлетворяют ли все элементы, просто np.all(np.logical_and(A_1 < cond1, A_1 > cond2))

cond2 > A_1 < cond1 не будет работать должным образом, потому что cond2 > A_1 возвращает массив bool.Сравнивать логические значения с cond1 не нужно по вашему описанию.Чтобы быть явным, можно использовать np.logical_and.

...