2016-12-07 4 views
0

У меня есть вопрос, который может быть простым для многих из вас. Я довольно новичок в numpy и python, поэтому, если бы вы могли мне помочь, это означало бы тонну !! Я получаю np.logical_andЛогическая функция in for loop с использованием numpy в python

import numpy as np 
edges= np.arange(7) 
a_edges= np.arange(5) 

for i in range(2): 
    indexes = np.logical_and((edges>=a_edges[i]),(edges<a_edges[i+1])) 

print(indexes) 
[False* True False False False False False] 

Мои вопросы следующие. Как это происходит? Например, это первый массив результата, False * (отмечен звездочкой), говорящий первый массив «ребер», не соответствующих обеим логическим функциям для всех диапазонов i (0 ~ 2)?

Если это правда, второй массив «ребер» не удовлетворяет всей логической логике, но это правда.

Например, ребра [1] = 1. Для i = 0 ребра [1] не соответствуют последней логике, следовательно, false. Однако для i = 1 ребра [1] истинны. Поэтому в целом, это должно быть неверно ...

Я не понимаю это правильно?

Заранее благодарен! Cece

ответ

0

Вы переписываете indexes каждую итерацию цикла, поэтому то, что вы видите, является результатом для i=1. Учитывая, что ваше выражение становится

indexes = np.logical_and(edges>=a_edges[1], edges<a_edges[2]) 

# equivalent to 
indexes = np.logical_and(edges>=1, edges<2) 

Другими словами, True когда edges 1 и False для всего остального.

+0

Подождите, я думал, что диапазон (2) приведет к тому, что i станет либо 0, либо 1 ... –

+0

'range (2)' возвращает эквивалент '[0, 1]', да. Поэтому сначала он запускается с 'i = 0', а затем в вашем случае снова запускается с' i = 1' и перезаписывает 'indexes'. – Iluvatar

+0

Но когда ребра [1] не выполняются, когда i = 0. Как это играет роль? –

 Смежные вопросы

  • Нет связанных вопросов^_^