Запутался в numpy операциях с массивами - PullRequest
0 голосов
/ 09 февраля 2020

Как так получилось?

X=np.array([range(1,12)])     

A=X>4
B=X<10
C=(X>4) | (X<10)
print (X[A])
print (X[B])
print (X[C])



[ 5  6  7  8  9 10 11]
[1 2 3 4 5 6 7 8 9]
[ 1  2  3  4  5  6  7  8  9 10 11]

1 Ответ

3 голосов
/ 09 февраля 2020

Я собираюсь догадаться, что ваша проблема в том, что у вас есть каждый элемент в конечном выражении, просто потому, что первые два очевидны (5..11 все больше четырех, а 1..9 все меньше десяти).

Но третий - также , так как каждый элемент больше четырех или меньше десяти. Числа 1..9 все меньше десяти, поэтому они в. Аналогично, 5..11 все больше четырех, поэтому они тоже. Объединение этих двух диапазонов представляет собой полный набор значений.

Если вы хотите, чтобы элементы были между четырьмя и десять (исключая с обоих концов), вы вероятно, следовало использовать "и" вместо "или" (& вместо |):

import numpy as np
X=np.array([range(1,12)])     

A=X>4
B=X<10
C=(X>4) | (X<10)
D=(X>4) & (X<10)
E=(X<=4) | (X>=10)
print (X[A])
print (X[B])
print (X[C])
print (X[D])
print (X[E])

Вывод этого:

[ 5  6  7  8  9 10 11]
[1 2 3 4 5 6 7 8 9]
[ 1  2  3  4  5  6  7  8  9 10 11]
[5 6 7 8 9]
[ 1  2  3  4 10 11]

Поскольку вы не не указывайте что вы хотели в исходном вопросе), я также добавил противоположную операцию (чтобы получить значения , а не в этом диапазоне). На это указывает код E.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...