2017-01-01 6 views
-1

Я пытаюсь понять, как np.mean работает в следующем примере:Поймите np.mean в питона

n = np.array([1,7,5,4]) 
m = pd.Series(data = [1,2,3,4],index = [1,2,3,4]) 

print(np.mean(n!=m)) 
## returns 0.5 
print(np.mean(n[n!=m])) 
## returns 4.0 

может кто-то объяснить, как первый выход прорабатывает значение 0,5 и как np.mean обрабатывает булевую серию n! = m? Я понимаю, что делает вторая часть.

+0

Посмотрите на булевское индексирование NumPy для второй части и булевых массивов для первой части. – Divakar

+0

Истина равна 1, а False - 0: n! = M - 1 False, 2 True, 3 True, 4 False, тогда среднее значение (False + True + True + False)/4 = (0 + 1 + 1+ 0)/4 = 0,5, но n [n! = M] - n [(False, True, True, False)] = n [(0, 1, 1, 0)] = [1, 7, 7, 1], тогда среднее значение (1 + 7 + 7 + 1)/4 = 4 – eyllanesc

ответ

1

n! = M возвращает булевский массив. Точные и False значения обрабатываются соответственно как 1,0. В этом случае (0 + 1 + 1,0)/4 дает 0,5

>>> n != m 
1 False 
2  True 
3  True 
4 False 

DTYPE: Его

п [! П = т] массива ([1, 7 , 7, 1])

это означает применение булева выбора на 'N'. он возвращает доходность [1,7,7,1]/4 4

>>> condition = [n !=m] 
>>> condition 
[1 False 
2  True 
3  True 
4 False 
dtype: bool] 
>>> n[condition] 
array([1, 7, 7, 1]) 
Смежные вопросы