2013-05-07 13 views
7

Dlaczego tak się dzieje?numpy.all z argumentami całkowitymi zwraca liczbę całkowitą

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

Czy jest to zamierzone, czy też jest to liczba całkowita, która właśnie przechodzi przez pęknięcie?

Czy mamy do czynienia z:

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

biegnę Numpy 1.8.0.dev-74b08b3 i Python 2.7.3

+4

Otrzymuję '[prawda, prawda, fałsz, prawda, prawda]', w Pythonie 2.7.3, NumPy 1.6.1. Z jakich wersji Pythona i NumPy korzystasz? –

+5

Mogę odtworzyć wyjście OP w 1.7.1. – DSM

+1

Czego oczekujesz 'np.all (-2)'? –

Odpowiedz

1

Korzystanie map(numpy.all, range(-2,3)) faktycznie tworząc listę:

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

dając

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

Jeśli tak map(lambda x: numpy.all([x]), range(-2,3)), by to zrobić:

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

dając

[True, True, False, True, True] 

Jak pisał przez @Mark Dickinson, jest to znany problem z numpy.all w którym zwraca wartość wejściową zamiast True lub False dla niektórych wejść. W twoim drugim przykładzie map(numpy.all, [False, True]) działa dokładnie tak, jak poprzednio, zwracając wartość wejściową.

Powiązane problemy