2013-03-15 3 views
4

Я прочитал документацию по адресу numpy's where, и я не понимаю, почему where вернет кортеж , вложенный массив, если я проверяю условие на простой массив 1D.Условный поиск возвращающих кортежей массивов для 1D-массивов?

> import numpy as np 
> my_array = np.random.randint(1,10, (20)) 
> np.where(my_array > 5) 

(array([ 0, 1, 4, 6, 7, 8, 10, 11, 13, 15, 16, 17, 18]),) 

Почему np.where возвращает кортеж в этом случае? Зачем влагать результат?

ответ

6

Я думаю, что для обеспечения согласованности, рассмотрим 2D массив:

import numpy as np 
my_array = np.random.randint(1,10, (4, 5)) 
pos = np.where(my_array > 5) 
my_array[pos] 

вы можете использовать кортеж в качестве индекса, чтобы выбрать все значения в местах.

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