2013-05-12 9 views
10

Pochodząca z tła list w Pythonie i języków programowania takich jak C++/Java, jedna jest używana do zapisu ekstrakcji elementów przy użyciu podejścia a[i][j] . Ale w NumPy zwykle robi się a[i,j]. Oba te zwracają ten sam wynik.Numpy: Różnica między [i] [j] a [i, j]

Jaka jest zasadnicza różnica między tymi dwoma, a która powinna być preferowana?

Odpowiedz

11

Główna różnica polega na tym, że najpierw a[i][j] tworzy widok na a[i], a następnie indeksuje do tego widoku. Z drugiej strony, a[i,j] indeksy bezpośrednio do a, dzięki czemu szybciej:

In [9]: a = np.random.rand(1000,1000) 

In [10]: %timeit a[123][456] 
1000000 loops, best of 3: 586 ns per loop 

In [11]: %timeit a[123,456] 
1000000 loops, best of 3: 234 ns per loop 

Z tego powodu wolę to drugie.