2013-05-07 4 views
7

Зачем это происходит?numpy.all с целыми аргументами возвращает целое число

>>> map(numpy.all, range(-2, 3)) 
[-2, -1, 0, 1, 2] 

Это намеренное или целое число, просто падающее через трещину?

ли это сделать с:

>>> map(numpy.all, [False, True]) 
[False, True] 

Я бегу Numpy 1.8.0.dev-74b08b3 и Python 2.7.3

+4

Я получаю '[True, True, False, True, True]', на Python 2.7.3, NumPy 1.6.1. Какие версии Python и NumPy вы используете? –

+5

Я могу воспроизвести вывод OP в 1.7.1. – DSM

+1

Что вы ожидаете вернуть 'np.all (-2)'? –

ответ

1

Использование map(numpy.all, range(-2,3)) фактически создает список с:

[numpy.all(-2), numpy.all(-1), numpy.all(0), numpy.all(1), numpy.all(2)] 

давая

[-2, -1, 0, 1, 2] 

Если вы сделали map(lambda x: numpy.all([x]), range(-2,3)), он будет делать:

[numpy.all([-2]), numpy.all([-1]), numpy.all([0]), numpy.all([1]), numpy.all([2])] 

давая

[True, True, False, True, True] 

Как отправленный @Mark Дикинсон, есть известная проблема с numpy.all, в которой она возвращает значение входного вместо True или False для некоторых входов. В вашем втором примере map(numpy.all, [False, True]) выполняется точно так же, как и раньше, возвращая входное значение.

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